不相邻问题

/*给出n个位置,每个位置可以填充0和1,但有条件限制:
1不能相邻。求满足条件的序列的所有可能情况。*/
#include<iostream>
using namespace std;
__int64 a[47][2];
int main()
{
    int T,n,i,s;
    a[1][0]=1;a[1][1]=1;
    /*按上面的递推公式求出n从1到46的结果存储在数组a[47][2]中。*/
    for(i=2;i<=46;i++)
    {
        a[i][0] = a[i-1][0]+a[i-1][1];
        a[i][1]=a[i-1][0];
    }
    scanf("%d",&T);
    s=0;
    while(T--)
    {
        s++;
        scanf("%d",&n);
        printf("Scenario#%d\n",s);
        printf("%I64d\n",a[n+1][0]);
        if(T)
            printf("\n");
    }
    return 0;
}
posted @ 2012-10-31 19:12  myth_HG  阅读(198)  评论(0编辑  收藏  举报