政务网站建设标准,网站建设可行性分析报告模板,wordpress如何更改字体大小,在线之家官网**汉诺塔问题#xff1a;**古代有一个梵塔#xff0c;塔内有三个座A、B、C#xff0c;A座上有64个盘子#xff0c;盘子大小不等#xff0c;大的在下#xff0c;小的在上#xff08;如图#xff09;。有一个和尚想把这64个盘子从A座移到B座#xff0c;但每次只能允许移… **汉诺塔问题**古代有一个梵塔塔内有三个座A、B、CA座上有64个盘子盘子大小不等大的在下小的在上如图。有一个和尚想把这64个盘子从A座移到B座但每次只能允许移动一个盘子并且在移动过程中3个座上的盘子始终保持大盘在下小盘在上。我们的移动盘子的步骤为 • 如果只有 1 个盘子则不需要利用C塔直接将盘子从A移动到B。 • 如果有 2 个盘子可以先将盘子2上的盘子1移动到C将盘子2移动到B将盘子1移动到B。这说明了可以借助C将2个盘子从A移动到B。
以此类推上述的思路可以一直扩展到 n 个盘子的情况将将较小的 n-1个盘子看做一个整体也就是我们要求的子问题以借助B塔为例可以借助空塔B将盘子A上面的 n-1 个盘子从A移动到B将A最大的盘子移动到CA变成空塔借助空塔A将B塔上的 n-2 个盘子移动到A将B最大的盘子移动到CB变成空塔…
#includebits/stdc.h
using namespace std;
int i 1;
void move(char x,char y)
{cout 第setw(4)i步将盘子从 x 移动到 y endl;
}void hanoi(int n,char a,char b,char c)
{if(n0){hanoi(n - 1, a, c, b);move(a, b);hanoi(n - 1, c, b, a);}}
int main()
{int n;cout请输入要进行hanoi问题的层数endl;cinn;hanoi(n, a, b, c);system(pause);return 0;
}