简单的汉诺塔问题解法代码

那一季青春之恋

那一季青春之恋

2016-02-19 11:04

今天图老师小编给大家展示的是简单的汉诺塔问题解法代码,精心挑选的内容希望大家多多支持、多多分享,喜欢就赶紧get哦!

以前学东西不扎实,现在捡捡也好,汉诺塔本是C语言开门就学的东西,不过上课那会儿真心听不懂,直到大二了,才明白那是咋回事,我感觉的编程,真的是一张窗户纸,不过捅破要花时间理解吸收。

题目描述:有一个塔,塔内有A,B,C三个柱子。起初,A柱上有n个盘子,依次由大到小、从下往上堆放,要求将它们全部移到C柱上;在移动过程中可以利用B柱,但每次只能移到一个盘子,且必须使三个柱子上始终保持大盘在下,小盘在上的状态。要求编程输出移动的步骤。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

代码如下:
代码如下:

#includestdio.h
int move(char one,char two)//这个函数就是为了输出的结果直观显示出来,比如只有一个盘子时,输出a--c. 就这样,把移动n个盘子每个步骤显示出来
{
    printf("%c -- %cn",one,two);
}

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

int hanoi(int n,char one,char two,char three)//是核心函数了
{
    int move(char one,char two);
    if(n==1)//当只有一个盘子时,直接从a柱移到c柱就好,也是递归程序的一个出口
      move(one,three);
    else{   //盘子大于一时
        hanoi(n-1,one,three,two);//先借助c柱把上面的n-1个盘子从a柱全部移动到b柱
        move(one,three);           //这时a柱只剩下一个盘子了,移动到c柱即可
        hanoi(n-1,two,one,three);//将b柱剩下的n-1个盘子借助a柱移动到c柱,任务也就完成了
    }
}
int main()
{
    int n;
    char a,b,c;
    while(scanf("%d",&n)!=EOF)//可以输入多组数据检验结果
       hanoi(n,'a','b','c');
    }

展开更多 50%)
分享

猜你喜欢

简单的汉诺塔问题解法代码

编程语言 网络编程
简单的汉诺塔问题解法代码

c语言 汉诺塔算法代码

编程语言 网络编程
c语言 汉诺塔算法代码

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

java 汉诺塔Hanoi递归、非递归(仿系统递归)和非递归规律 实现代码

编程语言 网络编程
java 汉诺塔Hanoi递归、非递归(仿系统递归)和非递归规律 实现代码

《蝙蝠侠:阿甘之城》谜题解法简单指引

电脑网络
《蝙蝠侠:阿甘之城》谜题解法简单指引

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

《全民英雄》攻略 推塔各种问题解析

手机游戏 IOS
《全民英雄》攻略 推塔各种问题解析

JAVA中文问题及最优解法

编程语言 网络编程
JAVA中文问题及最优解法

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

怎样用PPT制作网站导航栏

怎样用PPT制作网站导航栏

c#实现16进制和字符串之间转换的代码

c#实现16进制和字符串之间转换的代码
下拉加载更多内容 ↓