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(int i=2; i<65; i++)
 9     {
10         g[i] = 2*g[i-1] + 2; 
11         f[i] = 4*g[i-1] + 3;
12     }
13     int n;
14     while(scanf("%d", &n) != EOF)
15         printf("%lld\n", f[n]); 
16 }
View Code

 

posted on 2013-06-16 16:23  KimKyeYu  阅读(183)  评论(0编辑  收藏  举报

导航