poj1953_斐波那契数列
题意:长度为n的01序列,没有相邻的两个1,这种序列有多少种。
分析:使用递推来解决,设长度为n的没有相邻1的01序列总数为f[n]。假设序列中最后一个元素为0,则前面n-1个元素只要本身满足没有相邻的两个1就可以,所以最后一个元素为0的情况有f[n-1]种;若最后一个元素为1,则倒数第二个元素必须为0,则前面n-2个元素只要本身满足没有相邻的两个1就可以,所以最后一个元素为1的情况有f[n-2]种。综合这两种情况,得到递推公式f[n]=f[n-1]+f[n-2],婓波拉契数列是一样的。
代码:
View Code
1 #include <iostream> 2 #include <stdio.h> 3 using namespace std; 4 //148K 0MS 5 const int maxnum=46; 6 int f[maxnum]; 7 8 int main() 9 { 10 int num,k,i; 11 f[0]=1; 12 f[1]=2; 13 for(i=2;i<maxnum;i++) 14 f[i]=f[i-1]+f[i-2]; 15 scanf("%d",&num); 16 for(k=1;k<=num;k++) 17 { 18 scanf("%d",&i); 19 printf("Scenario #%d:\n",k); 20 printf("%d\n\n",f[i]); 21 } 22 return 0; 23 }
tjuoj 1726