-
#include
void move(int n,char x,char y);
void hanoi(int n,char one,char two,char three);
int main()
int n;
scanf("%d",&n);
hanoi(n,'a','b','c');
void hanoi(int n,char one,char two,char three)
if(n==1)
move(1,one,three);
elsehanoi(n-1,one,three,two);
move(n,one,three);
hanoi(n-1,two,one,three);
void move(int n,char x,char y)
printf("move disk %d from %c to %c",n,x,y);
就这样,其他输入的数量不能太大,最好在10个以内,如果超过64个,就收到了什么,一时半会儿不玩了。
-
#include
#include
void move(char from,int n,char to);
void hanno(int n,char a,char b,char c);
int main(void)
hanno(10,'a','b','c');
printf("");
system("pause");
return 0;
void hanno(int n,char a,char b,char c)
if(n>0)
hanno(n-1,a,c,b);
move(a,n,c);
hanno(n-1,b,a,c);
void move(char from,int n,char to)
printf("编号为 %d 的板从 %c 塔移动到 %c 塔",n,from,to);
-
void hanoi (int n; char x, char y,char z)
塔基x上直径从小到大、从上到下的N个直径从1到N的N个圆盘按规则移动到塔基z处,Y可作为辅助塔座。 */1 }
-
事实上,与单层一样,一个
开始:A,你需要移动2n,然后移动2n-1到c,然后移动1到b,然后最大的两个已经到位。
开始:C,需要移动2n-2,然后将2n-4移动到A,然后移动到B,然后接下来最大的两个就位。
开始:A,你需要移动2n-4,然后移动2n-5到A,然后移动1到B,然后第三大两个就位。
.以此类推,请参考了解河内单层塔的实现。
-
我不明白,我知道你在上大学,但你不想欺负我们这些没受过教育的人,你应该问问你的老师。
-
#include
int main()
void hanoi(int n,char one,char two,char three) 定义 Hanoi 函数。
借助 seat two}void move(char x,char y) 将 n 个磁盘从块 1 移动到块 3 来定义移动函数。
-
如何解决河内塔问题可以用递归方法解决。 设要移动的板数为n,为了将n个板从A柱移动到C极,可以将盘1移动到n-1,以盘C为中介,从A极移动到B极。 将 A 栏中剩余的第 N 个圆盘移动到 C 栏。
以A型杆为中介; 将光盘 1 移动到 N-1 从小节 B 移动到小节 C。 这样,河内塔问题就解决了。