C语言实现汉诺塔
汉诺塔
要把A柱子上的盘子移动到C柱子上,在移动过程中可以借助B柱子,但是要求小的盘子在上大的盘子在下。
解题思路:
1、把A柱子上的前N-1个盘子借助C柱子,全部移动到B柱子上(过程暂不考虑),再把第N个盘子由A柱子移动到C柱子上。
那么剩下要移动的盘子在B柱子上了。
2.把B柱子上的前N-2个盘子借助C柱子,全部移动到A柱子上(过程暂不考虑),再把第N-1个盘子由B柱子移动到C柱子上。
重复上面的两个步骤即可把A柱子上的盘子全部移动到C柱子上。

算法实现:
#include <stdio.h> int num=0;//统计移动次数3
void hanio(int n,char a,char b,char c){ //n是盘的个数 A,B,C为三个放盘的塔
if(n==1){
num++; // 移动一次加一次
printf("第%d次 %c-->%c\n",num,a,c); //打印A移动到C
}else{
hanio(n-1,a,c,b); //n-1次 A通过C移动到B
num++; // 移动一次加一次
printf("第%d次 %c-->%c\n",num,a,c); //打印A移动到C
hanio(n-1,b,a,c); //n-1次 B通过A移动到C
}
}
int main() {
int n=3;
hanio(n,'A','B','C');
}
C语言实现汉诺塔的更多相关文章
- 用C语言实现汉诺塔自动递归演示程序
用C语言实现汉诺塔自动递归演示程序 程序实现效果 1.变界面大小依照输入递归数改变. 2.汉诺塔自动移动演示. 3.采用gotoxy实现流畅刷新. 4.保留文字显示递归流程 程序展示及实现 githu ...
- 关于C语言解决汉诺塔(hanoi)问题
C语言解决汉诺塔问题 汉诺塔是典型的递归调用问题: hanoi简介:印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔.不论白天黑夜,总有一个僧侣 ...
- 【C语言】汉诺塔问题
之前遇见这个问题,非常费劲地理解了,并写出代码,然后过段时间,再遇见这个问题,又卡住了,如此反反复复两三次,才发现自己对递归的理解依然很肤浅.今天无聊,重温<算法:c语言实现>一书,又遇见 ...
- C语言 递归 汉诺塔问题 最大公约数问题
函数不能嵌套定义,但能嵌套调用(在调用一个函数的过程中再调用另一个函数) 函数间接或直接调用自己,称为递归调用 汉诺塔问题 思想:简化为较为简单的问题 n=2 较为复杂的问题,采用数学归纳方法分析 ...
- 如何用Go语言实现汉诺塔算法
package main import ( "fmt" ) func print(n int,x rune,y rune)(){ fmt.Printf("moving d ...
- C语言实现汉诺塔问题
代码如下: #include <stdio.h> #include <stdlib.h> void move(int n,char x,char y,char z) { ) { ...
- C语言解决汉诺塔问题!
很难受,看了很多资料才明白..... 对这个问题分析,发现思路如下:有n个黄金盘,要先把n-1个弄到B柱上,再把第n个弄到C柱上,然后把n-1个借助A柱弄到C柱上. 实现的函数如下: void f(i ...
- 汇编语言、与C语言、实现--汉诺塔--
题意描述: 用汇编语言实现汉诺塔.只需要显示移盘次序,不必显示所移盘的大小,例如: X>Z,X>Y,Z>Y,X>Z,..... (n阶Hanoi塔问题)假设有三个分别命名为 ...
- 汉诺塔(河内塔)算法 ----C语言递归实现
汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子, 在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆罗门把圆盘从下面开始按大小顺 ...
随机推荐
- 第9.8节 Python使用writelines函数写入文件内容
一. 语法 writelines(lines) 参数lines为一个列表,写入时列表中的每个元素不会自动添加换行符,因此通常需要在列表的每个元素后面添加换行符以确保写入的文件会分行. 注意:Pytho ...
- PyQt(Python+Qt)学习随笔:toolButton的autoRaise和arrowType属性
autoRaise属性 autoRaise属性表示toolButton按钮是否自动凸出,类型为布尔类型.默认值为False,可以通过autoRaise().setAutoRaise(bool enab ...
- 利用反射注册SpringCache的RedisCacheManager缓存信息
项目开发中,SpringCache是一个非常方便的工具,但是在配置信息注册时,用枚举方式可以满足遍历,但却无法应用在@Cacheable注解里,因此可以通过静态类的方式,借助反射完成缓存信息注册. 配 ...
- QQFishing QQ钓鱼站点搭建
答:为什么要写这个代码? 当然不是做黑产去盗别人扣扣,也没有啥查看别人隐私信息的癖好,搭建该站点的适用对象为->使用社会工程学定向钓鱼攻击的安全渗透人员 另外管理员界面后端写的很丑+很烂,除了我 ...
- js- 对象的连续调用
var jack = { somke : function (){ console.log('I was in the somkeing...cool..'); return this; }, dri ...
- 深入分析 Java Lock 同步锁
前言 Java 的锁实现,有 Synchronized 和 Lock.上一篇文章深入分析了 Synchronized 的实现原理:由Java 15废弃偏向锁,谈谈Java Synchronized 的 ...
- 彻底搞懂js this指向问题
在这里必须要提一句的是,this指向是学习js必须要掌握的(必须),再开始之前先看底部的总结,然后回上面看例子便一目了然. 例子1: function a(){ var user = "Ta ...
- http请求user_agent字段解析
浏览器的常见User Agent 各字段的解释 浏览器的User Agent字段令人迷惑,例如:某一版本的Chrome访问网络时,User Agent字段如下: Mozilla/5.0 (Window ...
- 6个JS特效教程,学完即精通
6个JS特效教程,学完即精通 JavaScript特效教程,学完你就能写任何特效.本课程将JavaScript.BOM.DOM.jQuery和Ajax课程中的各种网页特效提取出了再进行汇总.内容涵盖了 ...
- 一、less命令查看日志
查看日志时,一般用less满足大部分的需求. 使用命令格式: less [要查看的文件名] 例如:less LOG.20201211 中间加参数命令格式 less 参数 [要查看的文件名] 例如:查看 ...