Tower of Hanoi

2023-12-19 18:18
文章标签 hanoi tower

本文主要是介绍Tower of Hanoi,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一本日文数据结构书上看到的  用了递归

代码如下‘

#include <stdio.h>
void TowerOfHanoi(int disk, char from, char via, char to){if (disk==1){printf("円盤: %d を%cから%cへ移動する\n", disk, from, to);}else{TowerOfHanoi(disk-1, from, to, via);printf("円盤: %d を%cから%cへ移動する\n", disk, from, to);TowerOfHanoi(disk-1, via, from, to);}
}main(){TowerOfHanoi(3,'A','B','C');
}

执行后结果如下

円盤: 1 をAからCへ移動する
円盤: 2 をAからBへ移動する
円盤: 1 をCからBへ移動する
円盤: 3 をAからCへ移動する
円盤: 1 をBからAへ移動する
円盤: 2 をBからCへ移動する
円盤: 1 をAからCへ移動する

这篇关于Tower of Hanoi的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/513212

相关文章

437 - The Tower of Babylon(动态规划)

这题感觉比较水了,只不过建立模型的时候需要想一下,给n个长方体,我们不妨给它长宽高固定的3个长方体。 之后根据长宽的大小排序。 dp[i]代表第i个长方体当顶面的时候的高度,所以初始的时候dp[i] = cub[i[.h, dp[i] = dp[j] + cub[i[.h(当j的长宽均严格小于i的时候成立) 13989891 437 The Tower of Babylon Acce

Tower for Mac Git客户端管理软件

Mac分享吧 文章目录 效果一、下载软件二、开始安装1、双击运行软件,将其从左侧拖入右侧文件夹中,等待安装完毕2、应用程序显示软件图标,表示安装成功 三、运行测试1、打开软件,测试2、克隆项目,测试 安装完成!!! 效果 一、下载软件 下载软件 链接:www.macfxb.cn 二、开始安装 1、双击运行软件,将其从左侧拖入右侧文件夹中,等待安装完毕

[HDU 5886] Tower Defence (树形DP)

HDU - 5886 给定一棵树,每条边都有一个权值 定义一条边的战术价值为割去这条边后 剩下的图中最长链的长度 求随机割掉一条边,战术价值的期望 题目要求乘以 N−1 N-1,所以直接把概率消掉了 所以只要求割去每条边后的最长链长度即可 这就转化为了一个树形dp 首先割去一条边 u−>v u->v 后,最长链可能在 v v 为根的子树中 这个简单地做一次树形dp

汉诺塔hanoi

递归汉诺塔 这个递归的例子已经见过好多次了,但是每次遇到的时候,或多或少都出过bug,现在来总结一下,以便后面会用到 #include <iostream>using namespace std;void hanoi(int n,char here, char temp, char there){if(n == 1){cout << 1 << "从"<<here<<"到"<<there <<

Ansible-Tower快速入门-1.概览【翻译】

概览 Tower Ansible-Tower是作为Ansible的一个web接口界面,并采用REST API作为端点接入。通过使用开源的orchestration engine,无论是与你的团队共享操作任务,或是通过REST API与你的Ansible集成,Tower都提供了许多强大的自动化工具来让你的生活更轻松。 实时的playbooks输出和浏览 可以实时的查看playbooks的

Codeforces 392B Tower of Hanoi(递归+记忆化搜索)

题目链接:Codeforces 392B Tower of Hanoi 题目大意:给出一个3*3的矩阵,表示从i移动到j的代价,现在给出n,表示有n个碟子在1柱,需要移动到3柱,要求给出最小的花费。 解题思路:dp[l][r][n],表示的是从l移动n个碟子到r的最小花费,然后总共有两种移动方式: ans1 = solve(l, x, n-1) + solve(x, r, n-1

hanoi双塔

Problem Description 给定a、b、c三根足够长的细柱,在a柱上放有2n(n<=200)个中间有孔的圆盘,共有n个不同的尺寸,每个尺寸都有两个相同的圆盘,注意这两个圆盘是不加区分的。尺寸相同的圆盘在一起。 现在将这些圆盘移动到c柱上,在移动过程中可放在b柱上暂存。要求: (1) 每次只能移动一个圆盘; (2) a、b、c三根细柱上的圆盘都要保持上小下大的顺序。 请问完成

HDU 4939 Stupid Tower Defense

题目链接~~> 做题感悟:开始看着题很明显的 dp 但是dp 到最后也没 dp 出来,做完这题之后发现其实有些 dp 需要一些贪心的思想,然后再dp一下。 解题思路:                    三种塔都有各自的功能,就和英雄杀里的人物技能一样,绿塔和蓝塔貌似为红塔做铺垫,绿塔负责增加伤害,蓝塔负责增加时间,和英雄杀里宋江,西施,商鞅三个人的配合差不多,只有相互配合才使得伤害最大化

Codeforces Round #230 (Div. 2) C. Blocked Points D. Tower of Hanoi

C. Blocked Points 题意:A点和B点是4-connected,的条件是 the Euclidean distance between A and B is one unit and neither A nor B is blocked; or there is some integral point C, such that A is 4-connected with C,

poj1920 Towers of Hanoi

关于汉诺塔的递归,记住一个结论是,转移n个盘子至少需要2^n-1步 #include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#include<string>using namespace std;int two[100005],pos[100005];int m