| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1107 人关注过本帖
标题:求汉诺塔编程 C语言
只看楼主 加入收藏
meteor1990
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2009-9-16
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:5 
求汉诺塔编程 C语言
4层足以
搜索更多相关主题的帖子: 汉诺塔 C语言 
2009-10-09 19:28
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:4 
老谭的书上有例题啊
2009-10-09 19:31
choco1024
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:183
专家分:140
注 册:2008-8-31
收藏
得分:4 
#include <stdio.h>
 
void move(char getone, char putone)
{
    printf("%c-->%c\n",getone,putone);
}
void hanoi(int n, char A, char B, char C)
{
    if (n == 1)
        move(A,C);
    else
    {
        hanoi(n-1,A,C,B);
        move(A,C);
        hanoi(n-1,B,A,C);
    }
}
 
void main()
{
    hanoi(4,'A','B','C');
}
2009-10-09 22:17
hellowql
Rank: 2
来 自:安徽 合肥
等 级:论坛游民
帖 子:40
专家分:12
注 册:2009-4-25
收藏
得分:4 
我在VB论坛里用VB作了一个,你可以看看。
2009-10-10 17:55
evergogo
Rank: 2
来 自:宇宙-C星球
等 级:论坛游民
帖 子:64
专家分:25
注 册:2009-10-11
收藏
得分:4 
不是吧!
#include <stdio.h>  
 
void move(char getone, char putone)  
{  
    printf("%c-->%c\n",getone,putone);  
}  
void hanoi(int n, char A, char B, char C)  
{  
    if (n == 1)  
        move(A,C);  
    else  
    {  
        hanoi(n-1,A,C,B);  
        move(A,C);  
        hanoi(n-1,B,A,C);  
    }  
}  
 
void main()  
{  
    hanoi(4,'A','B','C');  
}  


不是这样,错误很多啊!

异星球#include变种的C!
2009-10-11 17:50
刘暮哲
Rank: 2
来 自:江苏
等 级:论坛游民
帖 子:75
专家分:83
注 册:2009-9-25
收藏
得分:4 
main()  
{  
int n;  
void hanoi(int n,char a,char b,char c);  
printf(";lease enter the number of disks to be moved:");  
scanf("%d",&n);  
hanoi(n,'a','b','c');  
}  
void hanoi(int n,char a,char b,char c)  
{  
if(n>0)  
{hanoi(n-1,a,c,b);  
printf("\n move disc %d from pile %c to %c",n,a,b);  
hanoi(n-1,c,b,a)};  
}  
Hanoi塔问题, 算法分析如下,设A上有n个盘子。
如果n=1,则将圆盘从A直接移动到C。
如果n=2,则:
(1)将A上的n-1(等于1)个圆盘移到B上;
(2)再将A上的一个圆盘移到C上;
(3)最后将B上的n-1(等于1)个圆盘移到C上。
如果n=3,则:
A)将A上的n-1(等于2,令其为n`)个圆盘移到B(借助于C),步骤如下:
(1)将A上的n`-1(等于1)个圆盘移到C上。
(2)将A上的一个圆盘移到B。
(3)将C上的n`-1(等于1)个圆盘移到B。
B)将A上的一个圆盘移到C。
C)将B上的n-1(等于2,令其为n`)个圆盘移到C(借助A),步骤如下:
(1)将B上的n`-1(等于1)个圆盘移到A。
(2)将B上的一个盘子移到C。
(3)将A上的n`-1(等于1)个圆盘移到C。到此,完成了三个圆盘的移动过程。
 
从上面分析可以看出,当n大于等于2时, 移动的过程可分解为三个步骤:第一步 把A上的n-1个圆盘移到B上;第二步 把A上的一个圆盘移到C上;第三步 把B上的n-1个圆盘移到C上;其中第一步和第三步是类同的。 当n=3时,第一步和第三步又分解为类同的三步,即把n`-1个圆盘从一个针移到另一个针上,这里的n`=n-1。
解释是老谭书上的  自己看吧 我那时也看了好久  讲的还是很不错的

做最好的自己
2009-10-11 19:54
快速回复:求汉诺塔编程 C语言
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011709 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved