1 //Hanoi(汉诺)塔问题。这是一个古典的数学问题,用递归方法求解。问题如下: 2 /* 3 古代有一个梵塔,塔内有3个座A,B,C,开始时A座上有64个盘子,盘子大小不等,大的在下,小的在上。 4 有一个老和尚想把这64个盘子从A座移动到C座,但规定每次只允许移动一个盘,且在移动过程中在3个座上 5 都始终保持大盘在下,小盘在上。在移动过程中可以利用B座。要求编程序输出移动盘子的步骤。 6 */ 7 #include<stdio.h> 8 #include<stdlib.h> 9 int main() 10 { 11 //对hanoi函数的声明 12 void hanoi(int n,char one,char two,char three); 13 int m; 14 printf("input the number of diskes:"); 15 scanf("%d",&m); 16 printf("The step to move %d diskes:\n",m); 17 hanoi(m,'A','B','C'); 18 system("pause"); 19 return 0; 20 } 21 //定义hanoi函数 22 void hanoi(int n,char one ,char two,char three) 23 {//将n个盘从one座借助two座,移到three座 24 void move(char x,char y); //对move函数的声明 25 if(n==1) 26 move(one,three); 27 else 28 { 29 hanoi(n-1,one,three,two); 30 move(one,three); 31 hanoi(n-1,two,one,three); 32 } 33 } 34 void move(char x,char y) 35 { 36 printf("%c->%c\n",x,y); 37 }
《hanoi(汉诺塔)问题》求解
原创
©著作权归作者所有:来自51CTO博客作者mb61289d0fd3618的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:《二叉树的练习》
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章