nyoj 252 01串 (动态规划+斐波那契数列)

来源:互联网 发布:centos一键安装ngrok 编辑:程序博客网 时间:2024/04/29 03:34

计算不含有“11”子串的m长度的01串共有多少个,m-1长度的01串有加0 或 加1两种方式来成为m长度的01串,
1.第m位是0的情况,就等于前m-1位的情况全部加0
2.第m位是1是,第m-1位一定是0,而m-1长度的01串可能不就等于m-2长度的01串全部加0吗,所以第m位是1的可能就=第m-2长度的01串全部加0的可能

这里用dp(m)表示m长度的01串的个数
dp(1)=2;
dp(2)=3;
dp(3)=dp(1)+dp(2);
dp(4)=dp(2)+dp(3);
…………

综上,dp(m)=dp(m-1)+dp(m-2)

#include<iostream>using namespace std;int main() {    int n,i,m,a[41]= {0,2,3};    for(i=3; i<=40; i++)        a[i]=a[i-1]+a[i-2];    cin>>n;    while(n--) {        cin>>m;        cout<<a[m]<<endl;    }    return 0;}
0 0
原创粉丝点击