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

posted @ 2012-08-26 18:53  pushing my way  阅读(356)  评论(0编辑  收藏  举报