5I - 汉诺塔IV

Posted goldenretriever

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5I - 汉诺塔IV相关的知识,希望对你有一定的参考价值。

还记得汉诺塔III吗?他的规则是这样的:不允许直接从最左(右)边移到最右(左)边(每次移动一定是移到中间杆或从中间移出),也不允许大盘放到小盘的上面。xhd在想如果我们允许最大的盘子放到最上面会怎么样呢?(只允许最大的放在最上面)当然最后需要的结果是盘子从小到大排在最右边。 

Input

输入数据的第一行是一个数据T,表示有T组数据。 
每组数据有一个正整数n(1 <= n <= 20),表示有n个盘子。 

Output

对于每组输入数据,最少需要的摆放次数。 

Sample Input

2
1
10

Sample Output

2
19684

// 几乎能独立写出来了
技术图片
 1 #include<stdio.h>
 2 /*    从左到右分别记柱子为a,b,c.
 3     #1将前n-1个盘子从a移到b.
 4     将第n个盘子从a移到b,再从b移到c.
 5     将前n-1个盘子从b移到c.
 6     则g(n)=2*f(n-1)+2.
 7     #2将前n-1个盘子从a移到b,再从b移到c.
 8     将第n个盘子从a移到b.
 9     将前n-1个盘子从c移到b.
10     则f(n)=3*f(n-1)+1.
11 */
12 int f[21]={0};
13 void table()
14 {
15     for(int i=1;i<21;i++)
16         f[i]=3*f[i-1]+1;
17 }
18 int main()
19 {
20     int t,n;
21     table();
22     scanf("%d", &t);
23     while(t--)
24     {
25         scanf("%d", &n);
26         printf("%d
", 2*f[n-1]+2);
27     }
28     return 0;
29 } 
View Code

 




以上是关于5I - 汉诺塔IV的主要内容,如果未能解决你的问题,请参考以下文章

代写Haskell程序 汉诺塔汉诺塔编程代码代写

python汉诺塔非递归

HDU2077

C语言汉诺塔问题

汉诺塔问题的详解-附代码

python3汉诺塔简单实现代码