不连续1的子串
中山大学2019年机试题
题目描述
Time Limit: 1000 ms
Memory Limit: 256 mb
串只包含0或者1,给定一个数字,输出以此为长度的01串不含连续1的串的个数。
如输入3,则输出5,因为长度为3的01串不含连续1的串包括000, 001, 010, 100, 101。
输入输出格式
输入描述:
输入一个整数N(N<=20)
输出描述:
输出结果
输入输出样例
输入样例#:
3
输出样例#:
5
解题方法
思路
实质上就是斐波那契数列问题,使用动态规划思想求解
代码
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
vector<int> dp(n+1);
dp[1] = 2;
dp[2] = 3;
for(int i=3;i<=n;i++){
dp[i] = dp[i-1]+dp[i-2];
}
cout<<dp[n]<<endl;
return 0;
}