永发信息网

C++汉诺塔程序

答案:2  悬赏:0  手机版
解决时间 2021-06-03 16:15
该程序只能用递归算法
最佳答案

#include<iostream.h>


void Hanoi(int n,char a,char b,char c);


void Move(int num,char from,char to);


int main()


{


int n;


cout<<"Input the number of disk:";


cin>>n;


cout<<"The step of moving "<<n<<" disk:\n";


Hanoi(n,'A','B','C');


return 1;
}


void Hanoi(int n,char a,char b,char c )


{


if(n == 1)


{


Move(n,a,b);


}


else


{


Hanoi(n-1,a,c,b);


Move(n,a,b);


Hanoi(n-1,c,b,a);


}


}



void Move(int num,char from,char to)


{


cout<<"Move "<<num<<": from "<<from<<"to "<<to<<endl;


}

全部回答
这是典型的递归问题 baidu一下 代码很多的 帮你找的 非原创

//C++汉诺塔

#include<iostream>

#include<iomanip>

using namespace std;

const int n=64;//盘子数目,注意:64个的时候我运行了5分钟都没有算完,定义小一些的数

void move(char,char);

void hannuota(int,char,char,char);

int main()

{

hannuota(n,'A','B','C');//ABC表示三座塔上的盘子

cout<<endl;

return 0;

}

void hannuota(int n,char a,char b,char c)//三座塔abc

{

if(n==1)move(a,c);

else{

hannuota(n-1,a,c,b);

move(a,c);

hannuota(n-1,b,a,c);//可以分析出搬运次数为2的N次方-1

}

};

void move(char a,char c)

{

cout<<a<<"-"<<c<<'\t';

}

#include<stdio.h>

#include<conio.h>

void move(char x,char y)

{

printf(" % c --> %c \n",x,y);

}

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);

}

}

int main (void)

{

int m;

printf ("input desk m:");

scanf("%d",&m);

hanoi (m,'a','b','c');

getch();

return 0;

}

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
淮阳区周口千里香大酒店地址有谁知道?有点事
1个QQ币多少钱?
孤独,是我一辈子的兄弟 用英语怎麽写?
如何让分手的女友回到我身边?
黄钻咋开通?
这些症状是不是H1N1?
关于百分数的数学问题,善于的来。
南县益阳缦安顿家纺在什么地方啊,我要过去处
a1一个人、是怎样的。
求道语文的题目,急,八年级上学期的
整牙需要多少钱
丹江口市十堰恒源祥在哪里啊,我有事要去这里
找dota的伙伴,qq群!!!
厦门岛内那个物业公司离岛外最近
第一次登月,不把登月舱带回地球的好处
推荐资讯
拍拍买家说拍下我的商品.但系统没叫我发货.我
祁东县衡阳明明化妆品美容连锁地址有谁知道?
想找一款3d空战单机游戏
三国BB升阶问题.
凉宫春日的忧郁下载
劲舞团GT2
两个人在一起时间长了感到厌烦,该怎么办
鬼剑士怎么加技能点啊?
dota熊战神装是什么?
心情不好时,该如何调整心态呢?
我是不是得了甲型h1n1?
要过冬至了,班费不够,能不能拉点赞助支援?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?