Hanoi塔问题
(n阶Hanoi塔问题)假设有三个分别命名为A、B、C的塔座,在塔座A上插有n(n<20)个直径大小各不相同、依小到大编号为1,2,…,n的圆盘。现要求将A轴上的n个圆盘移至塔座C上并仍按同样顺序叠排,圆盘移动时必须遵循下列规则: 1)每次只能移动一个圆盘; 2)圆盘可以插在A、B、C中的任一塔座上; 3)任何时刻都不能将一个较大的圆盘压在较小的圆盘之上。 请通过编程来打印出移动的步骤.
输入
只有一组输入数据.输入数据N(;表示在开始时A塔座上的盘子数),当输入0时程序结束.
输出
输出移动的步骤.如"A-->C","A-->B"等.每两的步骤之间有三个空格隔开,每输出5个步骤就换行.详细的见Sample Output.
样例输入
5 2 0
样例输出
A-->C A-->B C-->B A-->C B-->A B-->C A-->C A-->B C-->B C-->A B-->A C-->B A-->C A-->B C-->B A-->C B-->A B-->C A-->C B-->A C-->B C-->A B-->A B-->C A-->C A-->B C-->B A-->C B-->A B-->C A-->C A-->B A-->C B-->C
#include<stdio.h> #include<math.h> int i=0,m; void move(char x,char y) { printf("%c-->%c ",x,y); i++; if(i%5==0) printf("\n"); } void hanoi(int n,char one,char two ,char three) { if(n==1)move(one,three); else { hanoi(n-1,one,three,two); move(one,three); hanoi(n-1,two,one,three); } } main() { do { i = 0; scanf("%d",&m); if(m==0) break; hanoi( m,'A','B','C'); printf("\n"); }while(m!=0); }
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· ASP.NET Core 模型验证消息的本地化新姿势
· 对象命名为何需要避免'-er'和'-or'后缀
· SQL Server如何跟踪自动统计信息更新?
· AI与.NET技术实操系列:使用Catalyst进行自然语言处理
· 分享一个我遇到过的“量子力学”级别的BUG。
· AI Agent爆火后,MCP协议为什么如此重要!
· Draw.io:你可能不知道的「白嫖级」图表绘制神器
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· Java使用多线程处理未知任务数方案