当前位置: 首页 > news >正文

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

输入样例:

3

输出样例:

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

分析:

不会汉罗塔的uu们,先看看图解:

                   

非递归代码:

#include<iostream>
#include<stack>
using namespace std;
struct node{char a,b,c;int d;
};
stack<node>st;
int main(){int n; cin>>n;st.push({'a','b','c',n});while(st.size()){node x=st.top(); st.pop();if(x.d==1) printf("%c -> %c\n",x.a,x.c);else st.push({x.b,x.a,x.c,x.d-1}),st.push({x.a,x.b,x.c,1}),st.push({x.a,x.c,x.b,x.d-1});}return 0;
}

 递归代码:

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

 

http://www.lryc.cn/news/439135.html

相关文章:

  • word文档无损原样转pdf在windows平台使用python调用win32com使用pip安装pywin32
  • 海康威视相机在QTcreate上的使用教程
  • 进程状态、进程创建和进程分类
  • java后端请求调用三方接口
  • C#使用TCP-S7协议读写西门子PLC(三)
  • 铝型材及其常用紧固件、连接件介绍
  • 【裸机装机系列】7.kali(ubuntu)-安装开发所需工具
  • [C语言]第九节 函数一基础知识到高级技巧的全景探索
  • 1.1 计算机网络基本概述
  • Linux环境基础开发工具使用(gcc/g++与makefile)
  • PointNet++改进策略 :模块改进 | EdgeConv | DGCNN, 动态图卷积在3d任务上应用
  • FFmpeg源码:skip_bits、skip_bits1、show_bits函数分析
  • 加密
  • Kibana:如何使用魔法公式创建具有影响力的可视化效果?(第 1 部分)
  • 【C++】多态and多态原理
  • C# 实现二维数据数组导出到 Excel
  • nlohmann::json中有中文时调用dump转string抛出异常的问题
  • Unity中InputField一些属性的理解
  • 【webpack4系列】webpack构建速度和体积优化策略(五)
  • 从零开始搭建 PHP
  • 【数据结构】8——图3,十字链表,邻接多重表
  • eth-trunk 笔记
  • 通信工程学习:什么是接入网(AN)中的TF传送功能
  • 【JavaEE】IO基础知识及代码演示
  • 安卓13系统导航方式分析以及安卓13修改默认方式为手势导航 android13修改导航方式
  • [技术杂谈]暗影精灵8plus电竞版台式机安装和使用注意
  • 【加密算法基础——AES解密实践】
  • Spring01
  • gogps 利用广播星历解算卫星位置matlab函数satellite_orbits详细注解版
  • Oracle按照某一字段值排序并显示,相同的显示序号