Pku acm 2081 Recaman's Sequence
2010-04-21 17:28
211 查看
http://acm.pku.edu.cn/JudgeOnline/problem?id=2081
一道很简单的动态规划,根据一个递推公式求一个序列,我选择顺序的求解,即自底向上的递推,一个int数组result根据前面的值依此求出序列的每一个结果,另外一个boolean数组flag[i]记录i是否已经出现在序列中,求result的时候用得着,这样就避免了查找。核心的java代码为:
for(i=1;i<=500000;i++)
{
if(result[i-1]-i>0&&flag[result[i-1]-i]==false)
{
result[i] = result[i-1]-i;
flag[result[i-1]-i] = true;
}
else
{
result[i] = result[i-1]+i;
flag[result[i-1]+i] = true;
}
}
带有详细注释的代码可以在http://download.csdn.net/user/china8848/获得
Pku acm 1953 World Cup Noise [/b]动态规划题目总结(四)[/b]
http://acm.pku.edu.cn/JudgeOnline/problem?id=1953
给定一个小于45的整数n,求n位2进制数中不含相邻1的数的个数。看似简单的一道题,如果当n=45时,对2的45次方检查,是无法完成的任务。先分析一下这个问题:
对于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];
}
我们可以继续找出规律,其实这个就是Fibonacci数列:
F
= F[N-1]+F[N-2];可以继续简化代码。
带有详细注释的代码可以在http://download.csdn.net/user/china8848/获得
一道很简单的动态规划,根据一个递推公式求一个序列,我选择顺序的求解,即自底向上的递推,一个int数组result根据前面的值依此求出序列的每一个结果,另外一个boolean数组flag[i]记录i是否已经出现在序列中,求result的时候用得着,这样就避免了查找。核心的java代码为:
for(i=1;i<=500000;i++)
{
if(result[i-1]-i>0&&flag[result[i-1]-i]==false)
{
result[i] = result[i-1]-i;
flag[result[i-1]-i] = true;
}
else
{
result[i] = result[i-1]+i;
flag[result[i-1]+i] = true;
}
}
带有详细注释的代码可以在http://download.csdn.net/user/china8848/获得
Pku acm 1953 World Cup Noise [/b]动态规划题目总结(四)[/b]
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 | … | … | … |
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];
}
我们可以继续找出规律,其实这个就是Fibonacci数列:
F
= F[N-1]+F[N-2];可以继续简化代码。
带有详细注释的代码可以在http://download.csdn.net/user/china8848/获得
相关文章推荐
- http://acm.pku.edu.cn/JudgeOnline/
- PKU ACM 1017 Packets
- http://acm.pku.edu.cn/JudgeOnline/problem?id=2777 成段更新,区间统计颜色的种类 (用的位运算, 可是写的很搓)
- 整数分解和划分 - 兼 ACM PKU POJ 1221 解题报告
- HDOJ HDU 2081 手机短号 ACM 2081 IN HDU
- 1010(stamps),acm.pku.edu.cn
- http://acm.pku.edu.cn/JudgeOnline/problem?id=1131 八进小数转十进制小数
- acm pku 1207 The 3n+1的算法分析与实现
- acm pku 1251 Jungle Roads的算法分析与实现
- pku_ACM_1050 toMax
- ACM PKU 题目分类(完整整理版本)
- ACM 多重背包 pku 1276
- POJ 1002求487-3279解题报告——【PKU ACM】
- pku acm 1002
- PKU比较好的题目分类,这个将作为我学习ACM的计划
- Pku acm 1579 Function Run Fun
- Pku acm 3356 AGTC 动态规划题目解题报告(十)
- Pku acm 1179 Polygon 动态规划题目解题报告(二十)
- Pku acm 2388 Who's in the Middle 排序算法解题报告(二)----计数排序
- Pku acm 2159 Ancient Cipher 排序算法解题报告(六)----计数排序