室友上了个厕所我就学会了递推算法解决汉诺塔hanoi
Posted 80岁的程序猿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了室友上了个厕所我就学会了递推算法解决汉诺塔hanoi相关的知识,希望对你有一定的参考价值。
对于游戏的玩法,我们可以简单分解为三个步骤
1)将前63个盘子从X移动到Y上;
2)将最底下的第64个盘子从X移动到Z上;
3)将Y的63个盘子移动到Z上;
第二步是最容易实现的一步,那么第一步和第三步如何实现?
问题一(“将X上的63个盘子借助Z移到Y上")拆解为:
—将前62个盘子从X移动到Z上;
—将最底下的第63个盘子移动到Y上;
—将Z上的62个盘子移动到Y上;
问题二(“将Y上的63个借助X移到Z上")拆解为:
—将前62个盘子从Y移动到X上;
—将最底下的第63个盘子移动到Z上;
—将X上的62个盘子移动到Y上;
那么我们如何用代码实现呢?
#include<stdio.h>
int main()
int h;
printf("\\ninput number:\\n");
scanf("%d",&h);
printf("tower disks %d\\n",h);
hanoi(h, 'A', 'B', 'C');
void hanoi(int n, int x, int y, int z)
if(n==1)
printf("%c-->%c\\n", x, z);
else
hanoi(n-1, x, z , y);
printf("%c-->%c\\n", x, z);
hanoi(n-1,y,x,z);
以上是关于室友上了个厕所我就学会了递推算法解决汉诺塔hanoi的主要内容,如果未能解决你的问题,请参考以下文章