题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=252
这个是一道规律题,所以我们要找规律,拓展长度,我们可以知道:如果追加的是0那么原来长度的所有符合的也都符合,所以追加的1的话那么符合的原来长度的最后一位必须是0,这样符合长度的串的个数是原来长度减1,所以这个自底向上来进行计算,然后存在重复子问题,同时符合最优子结构,所以状态转移方程。dp[i]=dp[i-1]+dp[i-2];
#include<stdio.h>
int res[50]={0,0,3,5};
int main()
{
int n;
scanf("%d",&n);
while(n--)
{
int m,i;
scanf("%d",&m);
for(i=4;i<=m;i++)
res[i]=res[i-1]+res[i-2];
printf("%d\n",res[m]);
}
return 0;
}