01串
第一部分:题目
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=252
01串
时间限制:1000 ms | 内存限制:65535 KB
难度:2
- 描述
-
ACM的zyc在研究01串,他知道某一01串的长度,但他想知道不含有“11”子串的这种长度的01串共有多少个,他希望你能帮帮他。
注:01串的长度为2时,有3种:00,01,10。
- 输入
- 第一行有一个整数n(0<n<=100),表示有n组测试数据;
随后有n行,每行有一个整数m(2<=m<=40),表示01串的长度; - 输出
- 输出不含有“11”子串的这种长度的01串共有多少个,占一行。
- 样例输入
-
2 2 3
- 样例输出
-
3 5
第二部分 :代码
/* 有时递归超时可以试一试循环。 具体这题为什么递归超时,不清楚。 */ #include<iostream> using namespace std; int n; int main() { int t; cin>>t; int dp[1000]; dp[1]=2; dp[2]=3; while(t--) { cin>>n; if(n>2) { //最后一个字符只能是0或者1.为1时说明倒数第二个必定是0. //也就写成了n-1长度时的串+0,n-2长度时的串+01. for(int i=3;i<=n;i++) { dp[i]=dp[i-1]+dp[i-2]; } } cout<<dp[n]<<endl; } return 0; }
害怕失败的人,已经是一个loser!