三木社区

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 315|回复: 0
打印 上一主题 下一主题

C语言数据结构-algo3-10.c

[复制链接]

1562

主题

1564

帖子

4904

积分

博士

Rank: 8Rank: 8

积分
4904
跳转到指定楼层
楼主
发表于 2017-9-1 08:25:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. /* algo3-10.c Hanoi塔问题,调用算法3.5的程序 */
  2. #include<stdio.h>

  3. int c=0; /* 全局变量,搬动次数 */

  4. void move(char x,int n,char z)
  5. { /* 第n个圆盘从塔座x搬到塔座z */
  6.    printf("第%i步: 将%i号盘从%c移到%c\n",++c,n,x,z);
  7. }

  8. void hanoi(int n,char x,char y,char z) /* 算法3.5 */
  9. { /* 将塔座x上按直径由小到大且自上而下编号为1至n的n个圆盘 */
  10.    /* 按规则搬到塔座z上。y可用作辅助塔座 */
  11.    if(n==1)
  12.      move(x,1,z); /* 将编号为1的圆盘从x移到z */
  13.    else
  14.    {
  15.      hanoi(n-1,x,z,y); /* 将x上编号为1至n-1的圆盘移到y,z作辅助塔 */
  16.      move(x,n,z); /* 将编号为n的圆盘从x移到z */
  17.      hanoi(n-1,y,x,z); /* 将y上编号为1至n-1的圆盘移到z,x作辅助塔 */
  18.    }
  19. }

  20. void main()
  21. {
  22.    int n;
  23.    printf("3个塔座为a、b、c,圆盘最初在a座,借助b座移到c座。请输入圆盘数:");
  24.    scanf("%d",&n);
  25.    hanoi(n,'a','b','c');
  26. }
复制代码


回复

使用道具 举报

Archiver|手机版|小黑屋|三木电子社区 ( 辽ICP备11000133号-4 )

辽公网安备 21021702000620号

GMT+8, 2025-10-21 00:36 , Processed in 0.027830 second(s), 23 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表