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; }
未带完续……
2018-04-18