/*
NYoj 252 01串
简单的动态规划,也有点组合数的意思.
也是变形的斐波那契数列.
好题。
dp[n]=dp[n-1]+dp[n-2];
该方程的意思是:长度为n的串不含‘11’串的由来.
要计算不含有“11”子串的n长度的01串共有多少个,
n-1长度的01串有加0或者加1两种方式来成为n长度的01串,
1.加0肯定符合不含有“11”子串的要求。
2.加1的话只有在尾数为0的情况下才可以。
而n-1长度的01串尾数为0的情况不就是n-2长度的01串全部加0么!
好解释!!!!
*/
#include<stdio.h>
int main()
{
int dp[45];
dp[2]=3;
dp[3]=5;
for(int i=4;i<=40;i++)
dp[i]=dp[i-1]+dp[i-2];
int T;
scanf("%d",&T);
while(T--)
{
int n;
scanf("%d",&n);
printf("%d\n",dp[n]);
}
}
NYoj 252 01串[简单动态规划+组合数+斐波那契数列]
最新推荐文章于 2020-08-05 20:25:08 发布