汉诺塔问题

1.递推汉诺塔

递推公式来源:将n个盘子整体移动到另一根柱子分三个步骤:假设有A、B、C三根柱子。

1.将(n-1)根柱子移动到另一根柱子上(假设是B)                     步数+f(n-1)

2.将第n个盘子移动到另一根柱子上,假设是C。                      步数+1

3.将(n-1)个盘子整体移动到第n个盘子上。                          步数+f(n-1)

#include <stdio.h>
int main()
{
    int i, j, n, f[100];                //f[n]代表的是,将n个盘子整体移动到另一根柱子上所需的步数
    f[1] = 1;
    f[2] = 3;
    for (i = 3; i <= 20; i++)
    {
        f[i] = 2 * f[i - 1] + 1;       
    }
    while (scanf("%d", &n) != EOF)
    {
        printf("%d\n", f[n]);
    }
    return 0;
}
View Code

未带完续……

2018-04-18

猜你喜欢

转载自www.cnblogs.com/00isok/p/8874993.html