标签:
同样可以模拟普通的三柱汉诺塔问题
原来的三柱汉诺塔问题步骤:
(1)把n-1个盘子移动到B柱上 1步
(2)把第n个盘子移动到C柱上 1步
(3)把n-1个盘子移动到C柱上 1步
而该题的步骤和步数为:
(1)把n-1个盘子移动到C柱上 2步
(2)把第n个盘子移动到B柱上 1步
(3)把n-1个盘子移动到A柱上 2步
(4)把第n个盘子移动到C柱上 1步
(3)把n-1个盘子移动到C柱上 2步
同样注意数据的溢出,定义为long long int 型,输出用%I64d
代码如下:
#include<stdio.h> int main() { long long int Hanoi[40]; int i,n; Hanoi[1] = 2; for(i = 2;i <= 35;i++) { Hanoi[i] = 3*Hanoi[i-1] + Hanoi[1]; } while(scanf("%d",&n)!=EOF) printf("%I64d\n",Hanoi[n]); return 0; }
标签:
原文地址:http://www.cnblogs.com/52Cassie/p/4925687.html