随笔分类 -  递推

约瑟夫环:递归
摘要:假设下标从0开始,0,1,2 .. m-1共m个人,从1开始报数,报到k则此人从环出退出,问最后剩下的一个人的编号是多少?现在假设m=100 1 2 3 4 5 6 7 8 9 k=3第一个人出列后的序列为:0 1 3 4 5 6 7 8 9即:3 4 5 6 7 8 9 0 1(*)我们把该式转... 阅读全文

posted @ 2014-05-08 21:43 KimKyeYu 阅读(240) 评论(0) 推荐(0)

EOJ 1821 Hanoi Tower III
摘要:http://acm.cs.ecnu.edu.cn/problem.php?problemid=1821这题就等价于普通的汉诺塔,只是每一层移动两次,原来需要2^n - 1次,则现在需要2^(n + 1) - 2次,递推式为f(i) = 2 * f(i - 1) + 2 1 #include <iostream> 2 #include <cstdio> 3 using namespace std; 4 unsigned long long f[62]; 5 int main() 6 { 7 f[1] = 2; 8 for (int i = 2; i < 62; i 阅读全文

posted @ 2013-06-21 13:12 KimKyeYu 阅读(189) 评论(0) 推荐(0)

EOJ 1820 Hanoi Tower II
摘要:http://acm.cs.ecnu.edu.cn/problem.php?problemid=1820汉诺塔变形:每步都得顺时针。(下图为逆时针)。记 f[n] 为 把n个盘从 s->t 不经中间节点。如(A->B, B->C, C->A)记 g[n] 为 把n个盘从 s->t 经中间节点。如(A->C, B->A, C->B)分析见下图: 1 #include <stdio.h> 2 3 int main() 4 { 5 unsigned long long f[45], g[45]; 6 f[1] = 1, g[1] = 2; 阅读全文

posted @ 2013-06-16 20:43 KimKyeYu 阅读(302) 评论(0) 推荐(0)

EOJ 1822 Hanoi Tower IV
摘要:http://acm.cs.ecnu.edu.cn/problem.php?problemid=1822题意:双色汉诺塔,只是最终结果需保证相同大小的两块不倒置;容易想错:我最开始写成了:f[i] = 4*f[i-1] + 3;引用别人的题解:http://bbs.csdn.net/topics/270038285 1 #include <stdio.h> 2 3 int main() 4 { 5 long long f[65], //没有倒置. 6 g[65]; //只有最大的两个同尺寸盘子倒置 7 f[1] = 3, g[1] = 2; 8 for(in... 阅读全文

posted @ 2013-06-16 16:23 KimKyeYu 阅读(187) 评论(0) 推荐(0)

EOJ 1031 传球问题
摘要:EOJ 1031 http://acm.cs.ecnu.edu.cn/problem.php?problemid=1031题意: 传球问题,按题意我们得到编号从1~2~..~ i ~..~n~1的环,那么去掉末尾的1(将环从n后剪开), 我们得到:1~2~..~ i ~..~n,多了首尾不同的限制,于是问题完全等价 HDU 2045 —— 染色问题(做过这题的话,很容易想到)。 HDU 2045 http://acm.hdu.edu.cn/showproblem.php?pid=2045 具体分析: n为传球总次数,i 一个空位, 待填入接到第 i-1 次传球的人; 又有p个人,... 阅读全文

posted @ 2013-06-12 18:42 KimKyeYu 阅读(292) 评论(0) 推荐(0)

导航