首页 > 其他 > 详细

《hanoi(汉诺塔)问题》求解

时间:2015-12-17 22:09:12      阅读:400      评论:0      收藏:0      [点我收藏+]
 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(汉诺塔)问题》求解

原文:http://www.cnblogs.com/sun-/p/5055278.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!