CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  专题开发/技术/项目 >  数据结构与算法

如何使用迭代实现汉洛塔问题的解答(用c语言写出程序)

楼主xueyedongyu(是答案)2002-09-09 22:22:01 在 专题开发/技术/项目 / 数据结构与算法 提问

帮忙帮忙,万分感谢 问题点数:20、回复次数:8Top

1 楼DaNiao(鸿雁)回复于 2002-09-09 22:27:46 得分 0

那个塔是不能迭代的Top

2 楼clingsii()回复于 2002-09-09 22:42:45 得分 0

同意,应该用递归Top

3 楼clingsii()回复于 2002-09-09 22:43:25 得分 0

许多数据结构书上都有Top

4 楼zhf0021(屡战屡败,屡败屡战)回复于 2002-09-10 12:35:17 得分 0

一般的c语言得书上也有。  
  对,好像是递归,   而不是迭代,迭代一般用在计算机解方程上。Top

5 楼goodboy1881(积木)(谁都别拦着我在水源升星)回复于 2002-09-10 15:49:47 得分 10

move(char   a,char   b)  
  {  
        printf("%c-->%c",a,b);  
  };  
  hanoi(char   a,char   b,char   c,int   n)  
  {  
        if(n==1)  
              {  
                        move(a,c);  
              }  
          else  
              {  
                      hanoi(n-1,a,c,b);  
                      move(a,c);  
                      hanoi(n-1,b,a,c);  
              };  
  };  
  main()  
  {  
            int   n;  
            scanf("%d",n);  
            printf("\n");  
            hanoi('A','B','C',n);  
  }  
  这个就是hanoi的算法了  
  Top

6 楼ghost_lsw(1%≈1)回复于 2002-09-10 20:10:24 得分 10

/*用递归的方法*/  
  void   towers(int   n,char   frompge,char   topeg,char   auxpeg)  
  {  
        char   *   format1     ="\n%s%c%s%c",  
                  *   movedisk1="move   disk   1   from   peg",  
                  *   formatn     ="\n%s%d%s%c%s%c",  
                  *   movedisk   ="move   disk",  
                  *from             ="from   peg",  
                  *to                 ="to   peg";  
  if   (n==1)  
  {  
        printf(format1,movedisk1,frompeg,to,topeg);  
        return;  
  }/*出口*/  
   
  /*把n-1个peg从frompeg借助topeg移到auxpeg*/  
  towers(n-1,frmpeg,auxpeg,topeg);  
   
  /*把圆盘n由frompeg   直接称到topeg*/  
  tf(formatn,movedisk,n,form,frompeg,to,topeg);  
   
  /*把n-1个圆盘从auxpeg借助frompeg移到topeg*/  
  towers(n-1,auxpeg,topeg,frompeg);  
  }  
   
  main()  
  {  
  int   n;  
  scan(%d",&n);  
  towers(n,'X','Z','Y');  
  }Top

7 楼zhujiaqi(胖子)回复于 2002-09-10 22:49:09 得分 0

回去看数据结构,清华的,红皮的,里面有很详细的说明和例程Top

8 楼xueyedongyu(是答案)回复于 2002-09-10 23:05:36 得分 0

很感谢各位的帮忙,在提出问题前,我已知道如何用递归实现,只是书上要求用迭代去实现这个问题的解答.所以还请各位牛人帮一把,万分感谢.Top

相关问题

  • C++ 迭代器问题
  • 求教:如何用迭代编制汉洛塔的程序(用c语言写出来).
  • 急,需要非迭代法的线性方程组的解法(c/c++源码)
  • 急,需要非迭代法的线性方程组的解法(c/c++)
  • 请教迭代方法求解汉诺塔问题!
  • VC60中能使用 C++中的标准数组(如vector)的迭代器吗(iterator)?
  • [100分]急速求助啊,C语言编程谁可以用"雅可比迭代法"和"高斯-赛德尔迭代法"求解方程组啊
  • 迭代器!
  • The C++ Programming Language 习题解答哪里有?
  • 急!帮忙解答C++编程问题

关键词

  • topeg
  • 迭代
  • frompeg
  • auxpeg
  • movedisk
  • hanoi
  • 递归
  • towers
  • peg
  • 实现

得分解答快速导航

  • 帖主:xueyedongyu
  • goodboy1881
  • ghost_lsw

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo