汉诺塔的问题:4个柱子,如果塔的个数变位a,b,c,d四个,现要将n个圆盘从a全部移到d,移动规则不变

求移动步数最小的方案,可画流程图或C语言... 求移动步数最小的方案,可画流程图或C语言 展开
以你之姓y
2020-04-11 · TA获得超过5990个赞
知道答主
回答量:196
采纳率:0%
帮助的人:4.5万
展开全部

C语言:

#include <iostream>

using namespace std;

void move(char a, char b){

cout<<a<<"----->"<<b<<endl;

void hannuo(int n, char a, char b, char c , char d){

if(1==n){

move(a, d);

else if(2 == n){

move(a, b);

move(a, d);

move(b, d);

else{

hannuo(n-2, a, c, d, b);

move(a,c);

move(a,d);

move(c,d);

hannuo(n-2, b, c, a, d);

int main(){

char a='a', b='b', c='c', d = 'd';

int i;

cout<<"请输入盘子的个数";

while (cin>>i){

hannuo(i, a, b, c, d);

return 0;

扩展资料:

解题思路:

如a,b,c,d四柱,要把a柱第n个盘移到目标柱子(d柱),先把上层分两为两部份,上半部分移到b柱,下半部分移到c柱,再把第n盘移到目标柱子,然后,c柱盘子再移到目标柱子,再把b柱盘子移到目标柱子。

细节地方:上半部分移到b柱时,它的中间变量柱子是有二选一的。而下半部分移到c柱时,它的中间变量柱子只有一个(因为一个柱子已被上半部份占了),b,c也移到目标柱子时同理。

61吴坤
推荐于2017-12-15 · 超过10用户采纳过TA的回答
知道答主
回答量:84
采纳率:0%
帮助的人:39万
展开全部
四柱汉诺塔问题的求解程序.解题思路:如a,b,c,d四柱. 要把a柱第n个盘移到目标柱子(d柱),先把上层 分两为两部份,上半部份移到b柱,下半部分移到c柱,再把第n盘移到 目标柱子,然后,c柱盘子再移到目标柱子,再把b柱盘子移到目标柱子. 细节地方: 上半部份移到b柱时,它的中间变量柱子是有二选一的.而下半部分 移到c柱时,它的中间变量柱子只有一个(因为一个柱子已被上半部份 占了).b,c也移到目标柱子时同理。
我只知道这些了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式