poj 1953 World Cup Noise

 

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<algorithm>
using namespace std;
int d[50][2];
void dp(int n,int i)//求n位数尾数为i的满足条件的数
{
    if(i==1)
    {
        if(d[n-1][0]==-1)
        {
            dp(n-1,0);
        }
        d[n][i]=d[n-1][0];
    }
    if(i==0)
    {
        if(d[n-1][0]==-1)
        {
            dp(n-1,0);
        }
        if(d[n-1][1]==-1)
        {
            dp(n-1,1);
        }
        d[n][i]=d[n-1][0]+d[n-1][1];
    }
}
int main()
{
    int total;
    scanf("%d",&total);
    int k=1;
    memset(d,-1,sizeof(d));
    d[1][0]=1;
    d[1][1]=1;
    while(total--)
    {
        int n;
        scanf("%d",&n);
        if(d[n][0]==-1)
        {
            dp(n,0);
        }
        if(d[n][1]==-1)
        {
            dp(n,1);
        }
        printf("Scenario #%d:\n%d\n\n",k++,d[n][0]+d[n][1]);
    }
    return 0;
}
posted @ 2012-08-05 12:18  willzhang  阅读(135)  评论(0编辑  收藏  举报