爱问知识人 爱问教育 医院库

C语言汉诺塔改进意见。

首页

C语言汉诺塔改进意见。

关于c语言Hanoi问题的论文 
1.任务内容

A座有64个盘子,大小不等,大下小上,要求把其全部移到C,每次只允许移动一个盘,且在移动过程中在3个座上始终保持大下小上,可以利用B座,要求编程序输出移动步骤。
2.程序设计思想及其流程图
假如有办法将63个盘子从一个座移到另一座,那么这个问题就解决了。所以只需将63个盘子从A移动到B,再将一个盘子(最底下的,最大的)从A移到C,再将63个盘子从A移到C。要想将63个盘子从A移到B,需将62个盘子从A移到C,然后将一个最大的盘子从A移到B,然后将62个盘子从C移动到B。依次类推,直到第63次,完成将2个盘子从一个座移到另一座,第64次将一个盘子从一个座移动到另一个座,问题就解决了。此处用到递归法。
(1) 将A上63个盘子借助C先移动到B
(2) 把A上剩下的一个盘移到C
(3) 将63个盘从B借助A移动到C
假设有三个盘子从A到C,则步骤为A到C,A到B,C到B,A到C,B到A,B到C,A到C。共7步,可见移动n个盘子从A到C要 步,即完成任务要 步。
综上,将n个盘子从A移到C可分解为一下三个步骤:
(1)将A上n-1个盘借助C现移到B上
(2)把A上剩下的一个盘移动到C上
(3)将n-1个盘从B借助于A移到C上
第一和第三步,都是把n-1个盘子从一个座移到另一个座上,只是座的名字不同。为使之一般化,可以将其表示为:将“one”座上n-1个盘移到“two”座(借助“three”座)。只是两个步骤之间one,two,three和A,B,C的对应关系不同。将对第一步,将one对应A,two对应B,three对应C,对第三步,是one对应B,two对应C,three对应A。
因此可以把上述步骤分为两类操作:
(1)将n-1个盘从一个做移到另一个座上(n>1)。这是个递归过程,层层下放。
(2)将一个盘子从一个座移到另一个座上。
用hanio函数实现上面一类操作,用move函数实现上面第二类操作,函数调用hanoi(n,one,two,three)表示将n个盘子从“one”移动到“three”的过程。函数调用move(x,y)表示将1个盘子从x座移动到y座的过程。x,y是代表A、B、C座之一,根据每次同情况分别去A,B,C代入。
3.程序运行效果
Input the number of diskes:3↙
The steps to moving 3 diskes:
A——>C
A——>B
C——>B
A——>C
B——>A
B——>C
A¬¬——>C
4.源程序
#include
void main()
{
void hanoi(int n,char one,char two,char three);
int m;
printf(“input the number of diskes:”);
scanf(“%d”,&m);
printf(“The step to moveing %d diskes: ”,m);
hanoi(m,’A’,’B’,’C’);
}
void hanoi(int n,char one,char two,char three)
{
void move(char x,char y);
if(n==1)
move(one,three);
else
{
hanio(n-1,one,three,two);
move(one,three);
hanoi(n-1,two,one,three);
}
}
void move(char x,char y)
{
printf(“%c——>%c ”,x,y);;

这个是小弟的论文,有没有高手能提出点改进意见,这个是要求之一。。。

提交回答

全部答案

    2018-11-14 01:24:06
  • 我给点意见吧,你应该说明一下,输入的数据不能太大,否则要很长时间才能运行出来,如果你输入个62,得要多长时间呢?所以还是表明一下吧。

    韩***

    2018-11-14 01:24:06

类似问题

换一换

相关推荐

正在加载...
最新资料 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 176-195
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):