前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >7-8 汉诺塔的非递归实现

7-8 汉诺塔的非递归实现

作者头像
韩旭051
发布2019-11-08 10:03:15
9270
发布2019-11-08 10:03:15
举报
文章被收录于专栏:刷题笔记刷题笔记

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

                 本文链接:[https://blog.csdn.net/shiliang97/article/details/96485180](https://blog.csdn.net/shiliang97/article/details/96485180)

?点这里

7-8 汉诺塔的非递归实现

借助堆栈以非递归(循环)方式求解汉诺塔的问题(n, a, b, c),即将N个盘子从起始柱(标记为“a”)通过借助柱(标记为“b”)移动到目标柱(标记为“c”),并保证每个移动符合汉诺塔问题的要求。

输入格式:

输入为一个正整数N,即起始柱上的盘数。

输出格式:

每个操作(移动)占一行,按柱1 -> 柱2的格式输出。

输入样例:

3

输出样例:

a -> c
a -> b
c -> b
a -> c
b -> a
b -> c
a -> c

没有错,我用递归写✍的而且过了。。。。(虽然这道题说了非递归实现)

汉诺塔,咱还真不会(C语言?老师讲过?,咱都还回去了)

感觉从B站学了一下?才懂了点:汉诺塔算法粗劣讲解以及编程实现

就是每一?‍步都可以分解为

1.前n-1个移到辅助杆子上。

2.把最后一个移到目标杆子上。

3.把辅助杆子上的移到目标杆子上。

hanno(n,yuanshi,fuzhu,mubiao){ hanno(n-1,yuanshi,mubiao,fuzhu); hanno(1,yuanshi,fuzhu,mubiao); hanno(n-1,fuzhu,yuanshi,mubiao); } //大概思路就是这么个思路

#include<iostream>
using namespace std;
int hanno(int n,char yuanshi,char fuzhu,char mubiao){
	if(n==1){
		printf("%c -> %c\n",yuanshi,mubiao);
	}else{
		hanno(n-1,yuanshi,mubiao,fuzhu);
		hanno(1,yuanshi,fuzhu,mubiao);
		hanno(n-1,fuzhu,yuanshi,mubiao);
	}
	return 0;
}
int main(){
	int n;
	cin>>n;
	hanno(n,'a','b','c');
	return 0;
} 

ps:我后来又遇到了这个题,总算是研究了一下非递归实现

1-2 汉诺塔的非递归实现 (25 分)点击传送~~~

至于非递归?嘛,咱现在还不会。咱也不敢写。给个链接⑧;

非递归的思想来实现汉诺塔问题的求解

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-07-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ?点这里
  • 7-8 汉诺塔的非递归实现
    • 输入格式:
      • 输出格式:
        • 输入样例:
          • 输出样例:
            • 没有错,我用递归写✍的而且过了。。。。(虽然这道题说了非递归实现)
                • 汉诺塔,咱还真不会(C语言?老师讲过?,咱都还回去了)
                  • 感觉从B站学了一下?才懂了点:汉诺塔算法粗劣讲解以及编程实现
                    • 就是每一?‍步都可以分解为
                    • 1.前n-1个移到辅助杆子上。
                    • 2.把最后一个移到目标杆子上。
                    • 3.把辅助杆子上的移到目标杆子上。
                    • ps:我后来又遇到了这个题,总算是研究了一下非递归实现
                    • 1-2 汉诺塔的非递归实现 (25 分)点击传送~~~
                    • 至于非递归?嘛,咱现在还不会。咱也不敢写。给个链接⑧;
                      • 非递归的思想来实现汉诺塔问题的求解
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档