poj 1953
来源:互联网 发布:mindmap mac 编辑:程序博客网 时间:2024/06/07 08:13
题目链接 http://poj.org/problem?id=1953
题意: 长度为n的字符串由0和1组成,问有多少个是不存在两个相邻的1的,输入n,输出符合条件的长度为n的字符串的个数。
思路:动态规划(dp),数组num_0[i]代表长度为i而且最后一位是0的符合条件的字符串个数,数组num_1[i]代表长度为i而且最后一位是1的符合条件的字符串个数,ans[i]代表长度为i的符合条件的字符串个数,明显ans[i]=num_0[i]+num_1[i],递推公式为,num_1[i]=num_0[i-1],因为最后一位是1,那么倒数第二位一定是0才符合条件,num_0[i]=num_0[i-1]+num_1[i-1],因为倒数第一位是0,所以倒数第二位无论是0还是1都可以。一直递推下去就可以得到答案,需要注意的是数字比较大,所以数组要用long long型的。
#include<iostream>using namespace std;long long num_0[50],num_1[50],ans[50];void dp(){ num_0[1]=num_1[1]=1; ans[1]=2; for(int i=2;i<50;i++){ num_0[i]=num_0[i-1]+num_1[i-1]; num_1[i]=num_0[i-1]; ans[i]=num_0[i]+num_1[i]; }}int main(){ dp(); int T; cin>>T; for(int i=1;i<=T;i++){ int n; cin>>n; cout<<"Scenario #"<<i<<':'<<endl; cout<<ans[n]<<endl<<endl;; } return 0;}
0 0
- POJ 1953
- poj 1953
- POJ 1953
- poj 1953
- poj 1953
- POJ-1953
- POJ 1953
- POJ-1953
- poj 1953
- poj-1953
- POJ 1953 DP
- poj 1953 Team Rankings
- POJ 1953 解题报告
- POJ
- poj
- POJ
- POJ
- poj
- html5+Jquery mobile+phoneGAP开发混合程序实战记录(及疑难)
- item15: 在资源管理类中提供对原始资源的访问
- 慢下来的时光
- 在Windows下配置安装OMNeT++ 4.X
- BNUOJ 10803 F. 起床的烦恼
- poj 1953
- Mysql explain用法和性能分析
- POJ 2774 Long Long Message 求两个串最长公共子串(后缀数组)
- [转]ocx 安全警告的解决方法
- iOS开发小知识
- IOS开发-object-c之 @[], @{}
- 对于(function(){}())和function(){}实例的作用域分析(里面有很多问题……)
- Python 知识整理
- 售价高达2500美元的播放器Astell&Kern AK240你知道吗?