nyoj 469 递推

令a[i]表示i不排在最后的总数,b[i]表示排在最后的总数,则递推公式如下:

a[i]=a[i-1]+b[i-2];

b[i]=b[i]+b[i-3];

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int a[56],b[56];
int main()
{
int i,n;
a[1]=0; b[1]=1;
a[2]=0; b[2]=1;
a[3]=1; b[3]=1;
for(i=4;i<=55;i++)
{
a[i]=a[i-1]+b[i-2];
b[i]=b[i-1]+b[i-3];
}
while(scanf("%d",&n)!=EOF)
{
printf("%d\n",a[n]+b[n]);
}
return 0;

}



你可能感兴趣的:(OJ)