您的位置:首页 > 其它

Pku acm 1953 World Cup Noise 动态规划题目解题报告(四)

2008-01-01 10:42 344 查看
http://acm.pku.edu.cn/JudgeOnline/problem?id=1953
给定一个小于45的整数n,求n位2进制数中不含相邻1的数的个数。看似简单的一道题,如果当n=45时,对2的45次方检查,是无法完成的任务。先分析一下这个问题:
N
以1结尾的个数
以0结尾的个数
总和
1
1
1
2
2
1
2
3
3



对于n=1来说,以1结尾、以0结尾个数都是1,总和是2,下面过度到2:对于所有以1结尾的数,后面都可以加上0,变为n=2时以0结尾的,而只有结尾为0的数才能加上1(因为不能有两个连续0),这样就可以在n=2的格里分别填上1、2,总和算出来为3,以此类推,我们可以算出所有n<=45的值,然后根据输入进行相应输出。核心代码如下:

int i,num,count,array[50][2],j=0;
array[1][1] = 1;
array[1][0] = 1;
for(i=2;i<50;i++)
{
array[i][0] = array[i-1][1];
array[i][1] = array[i-1][1]+array[i-1][0];
}

F
= F[N-1]+F[N-2];可以继续简化代码。
带有详细注释的代码可以在http://download.csdn.net/user/china8848/获得
我们可以继续找出规律,其实这个就是斐波那切数列数列:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐