标签:
| input | output |
|---|---|
3 |
4 |
题意:涂色问题。相邻颜色不能一样,蓝色只能在红白或白红之间出现。
解析:递推。
考虑第i个位置的颜色:若是红或白色,则只需要在i-1的后面加上一个白或红色即可;若是蓝色,则i-1必是红或白,则只需要在i-2的后面加上红或白即可。
必须用long long,否则会WA on Test 12.
AC代码:
#include <cstdio>
long long f[50];
int main(){
f[1] = f[2] = 2;
for(int i=3; i<=50; i++) f[i] = f[i-1] + f[i-2];
int n;
while(scanf("%d", &n)==1){
printf("%lld\n", f[n]);
}
return 0;
}
标签:
原文地址:http://blog.csdn.net/u013446688/article/details/44116001