首页 > 编程语言 >4147:汉诺塔问题(Tower of Hanoi)C++

4147:汉诺塔问题(Tower of Hanoi)C++

时间:2024-01-22 17:13:10浏览次数:18  
标签:4147 move Hanoi C++ char 汉诺塔

递归C和C++一样,就写个C++了。

#include<iostream>
using namespace std;
void move(int n,char a,char b,char c){
    if(n<=0) return;
    move(n-1,a,c,b);
    cout << n << ":"<<a<<"->"<<c <<'\n';
    move(n-1,b,a,c);
}

int main(){
    int n;
    char a, b ,c;
    while(cin >> n>> a >> b >> c){
        move(n,a,b,c);
    }
    return 0;
}

这里的move函数看作一个黑盒,作用就是将A柱上的最上面元素移到C柱上去,而B柱就是其中移动中需要借助的工具。

结果:

标签:4147,move,Hanoi,C++,char,汉诺塔
From: https://www.cnblogs.com/llllmz/p/17980487

相关文章

  • 汉诺塔问题
    四阶汉诺塔求解图:汉诺塔问题代码实现以及当n=5,10,15,20增大时,算法所用时间长短变化情况图像绘制:1importtime2importmatplotlib.pyplotasplt34defhanoi(n,source,target,auxiliary):5ifn>0:6#将n-1个盘子从源柱子移动到辅助柱子7hanoi(n-1,......
  • python实现汉诺塔游戏
    highlighter-pythonlt=list()#左边的空列表rt=list()#右边的空列表ct=list()#中间的空列表#初始化函数definit():size=int(input("请输入你要挑战的高度:"))#建立左边的汉诺塔foriinrange(1,size+1):lt.append(i*2-1);......
  • 汉诺塔游戏
    lt=list()#左边的空列表rt=list()#右边的空列表ct=list()#中间的空列表#初始化函数definit():size=int(input("请输入你要挑战的高度:"))#建立左边的汉诺塔foriinrange(1,size+1):lt.append(i*2-1);ct.append(-1)......
  • P4147 玉蟾宫 题解
    P4147玉蟾宫题解题目链接P4147玉蟾宫简要思路很容易发现,这是最大子矩形问题的板子题。定义一个二维的\(dp\)数组,\(dp_{i,j}\)代表以坐标\((i,j)\)为底的线段,最长能向上延伸多少个单位长度的F(如果自身为R,值则为\(0\))。对于\(dp\)数组的维护,分为两种情况:当\(......
  • Java-递归经典题目-汉诺塔
    一、问题TowerofHanoi,是一个源于印度的古老传说:大梵天创建世界时做了三根金刚石柱,在一根柱子从上往下按大小顺序摞着64片黄金圆盘,大梵天命令婆罗门把圆盘重新摆放在另一根柱子上,并且规定:一次只能移动一个圆盘小圆盘上不能放大圆盘请使用程序代码模拟圆盘的移动过程,并估算出时间......
  • hanoiTower
    汉诺塔(hanoiTower)思路分析:1.假定只有一个盘,直接移动到c柱2.若有多个盘,把它看作只有两个盘,最下面的和上面所有盘(num-1)3.把a柱上的上面所有盘(num-1),移动到b柱,借助c柱4.把最下面的盘直接移动到c柱5.把b柱所有盘移动到c柱,借助a柱/***汉诺塔的实现*/publicclassHa......
  • 汉诺塔(面试)
    汉诺塔(递归算法)在经典汉诺塔问题中,有3根柱子及N个不同大小的穿孔圆盘,盘子可以滑入任意一根柱子。一开始,所有盘子自上而下按升序依次套在第一根柱子上(即每一个盘子只能放在更大的盘子上面)。移动圆盘时受到以下限制:(1)每次只能移动一个盘子;(2)盘子只能从柱子顶端滑出移到下......
  • 题解 P4285 [SHOI2008] 汉诺塔
    具体思路设\(f_{i,x}\)表示\(i\)个盘子从\(x\)柱子出发的步数。设\(g_{i,x}\)表示\(i\)个盘子从\(x\)柱子出发到哪个柱子。记\(y=g_{i-1,x}\),\(z=6-x-y\)。其中,\(y\)代表将前\(i-1\)个盘子从\(x\)柱子移到的柱子,\(z\)代表剩下的那个柱子。分类讨论。若......
  • 汉诺塔问题(递归算法思想)
    ⛩️博主主页:@威化小餅干......
  • 汉诺塔(河内塔)题解
    汉诺塔(河内塔)题解我们定义\(T_n\)为根据规则将\(n\)个圆盘从一根柱子移动到另一根柱子的最少移动步数,按照这样的定义,本道题的答案实际上就是\(T_n\)。通过手动模拟,可得到\(T_1=1,T_2=3\)。同时显然有\(T_0=0\),即表示\(0\)个圆盘根本无需做任何移动。接着我们开始考虑......