汉诺塔问题,有空再研究

来源:互联网 发布:域名a记录查询 编辑:程序博客网 时间:2024/05/16 09:29
#include <stdio.h>void Hanoi(int n, char a, char b, char c);void Move(int n, char a, char b);int main(){    int n;    printf("Input the number of disks:");    scanf("%d", &n);    printf("Steps of moving %d disks from A to B by means of C:\n", n);    Hanoi(n, 'A', 'B', 'C'); /*调用递归函数Hanoi()将n个圆盘借助于C由A移动到B*/    return 0;}/* 函数功能:用递归方法将n个圆盘借助于柱子c从源柱子a移动到目标柱子b上 */void Hanoi(int n, char a, char b, char c){    if (n == 1)    {        Move(n, a, b);       /* 将第n个圆盘由a移到b */    }    else    {        Hanoi(n - 1, a, c, b); /* 递归调用Hanoi(),将第n-1个圆盘借助于b由a移动到c*/        Move(n, a, b);       /* 第n个圆盘由a移到b */        Hanoi(n - 1, c, b, a); /*递归调用Hanoi(),将第n-1个圆盘借助于a由c移动到b*/    }}/* 函数功能:  将第n个圆盘从源柱子a移到目标柱子b上 */void Move(int n, char a, char b){    printf("Move %d: from %c to %c\n", n, a, b);}/*void move(int n, char a, char b, char c);int main(){    int n;    printf("请输入要移动的块数:");    scanf("%d", &n);    printf("Steps of moving %d disks from A to B by means of C:\n", n);    move(n,'A','C','B');    return 0;}void move(int n, char a, char b, char c){    if(n == 1)    {        printf("Move 1:");        printf("from %c to %c\n", a, c);    //当n只有1个的时候直接从A移动到C    }    else    {        move(n-1, a, c, b);            //第n-1个要从A通过C移动到B        printf("from %c to %c\n", a, c);        move(n-1, b, a, c);            //n-1个移动过来之后B变开始盘,b通过A移动到C,这边很难理解    }}*/

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 房产权50年以后怎么办 在香港手机没电怎么办 学校官网登陆忘记密码怎么办 网上申报学校忘记密码怎么办 专转本想换专业怎么办 发生工伤没有平均公资怎么办? 单招过了不想去怎么办 22岁了还想复读怎么办 父母不让我读大专了怎么办 专升本考试失利怎么办 高考复读一年后失败了怎么办? 医保住院超过30万怎么办 北京医保超过2万怎么办 工伤公司垫付医疗费没法报销怎么办 司法考试照片耳朵露不出来怎么办 新华社毕业证照片用光了怎么办 农村父母投靠落户社保怎么办 退休后投靠父母户口怎么办 要离婚想儿子了怎么办 怀孕期间离婚了孩子户口怎么办 常州武进区怎么办居住证明 跟老公离婚了户口怎么办 离婚了不给户口怎么办 父母不给户口本迁户口怎么办 产能置换的煤矿职工怎么办 如果是单位集体户小孩读书怎么办 异地防疫不给打怎么办? 青岛市办理大龄就业困难补贴怎么办 就业登记证掉了怎么办 就业信息填错了怎么办 小孩入学父母无单位怎么办 和公婆住一起很压抑怎么办 不想和公婆一起住怎么办 在家啃老三年了怎么办 新时代卫计工作怎么办 被公司辞退不发工资怎么办 被公司辞退后不发工资怎么办 领导分配的工作太多怎么办 领导故意不给活怎么办 户口迁移后医疗社保怎么办 有了c证考b证怎么办