递归法解决Hanoi塔问题
来源:互联网 发布:网络利大于弊辩论词 编辑:程序博客网 时间:2024/04/28 19:52
解题思路:
要移动n个盘子,可以定义一个函数:mov (n,a,b,c),其中字符变量a,b,c分别表示A,B,C三个塔,函数mov(n,a,b,c)表示将n个盘子从A塔(借助B塔)移动到C塔。则这个问题可以使用递归调用方法解决。在n>0的前提下,函数mov(n,a,b,c)通过下列两步实现移动
1.mov(n-1,a,c,b)即将n-1个盘子从A塔(借助C塔)移动到B塔。目的是让A塔上的第n个盘子(最下面的盘子)上无其他盘子
2.将底下的第n个盘子从A塔移动到C塔
要移动n个盘子,可以定义一个函数:mov (n,a,b,c),其中字符变量a,b,c分别表示A,B,C三个塔,函数mov(n,a,b,c)表示将n个盘子从A塔(借助B塔)移动到C塔。则这个问题可以使用递归调用方法解决。在n>0的前提下,函数mov(n,a,b,c)通过下列两步实现移动
1.mov(n-1,a,c,b)即将n-1个盘子从A塔(借助C塔)移动到B塔。目的是让A塔上的第n个盘子(最下面的盘子)上无其他盘子
2.将底下的第n个盘子从A塔移动到C塔
3.mov(n-1,b,a,c)即将n-1个叠在B塔上的盘子(借助于A塔)移动到C塔
#include <stdio.h>int step=0;void mov(int n,char a,char b,char c);int main(){int n;scanf("%d",&n);printf("n=%d\n",n);mov(n,'a','b','c');return 0;}void mov (int n,char a,char b,char c){if(n>0){mov(n-1,a,c,b);step++;printf("Step %d:%c--->%c\n",step,a,c);mov(n-1,b,a,c);}}
- 递归法解决Hanoi塔问题
- Hanoi塔问题(递归解决)
- 用递归来解决Hanoi塔问题
- 递归-Hanoi塔问题
- 递归---Hanoi塔问题
- 算法-Hanoi塔问题+递归
- 递归解决 Tower of Hanoi 问题
- hanoi塔问题(经典递归)
- n阶Hanoi塔问题 递归实现
- 栈与递归实现Hanoi塔问题
- hanoi(汉诺)塔问题递归过程
- 递归——Hanoi塔问题
- 递归法求解汉罗塔hanoi问题
- Hanoi问题递归求解
- Hanoi塔递归实现
- Hanoi双塔问题(hanoi)
- 汉罗塔hanoi问题之递归
- 汉诺塔问题 hanoi(递归)
- linux内核input子系统解析
- 常用表达式
- panic和bug_on
- 【第六章】 AOP 之 6.1 AOP基础 ——跟我学spring3
- 【第六章】 AOP 之 6.2 AOP的HelloWorld ——跟我学spring3
- 递归法解决Hanoi塔问题
- C++中extern “C”技术探索
- IDispatch接口原理与应用
- linux输入子系统
- demo7-4,后备缓冲
- jeecms修改后台访问路径
- 【第六章】 AOP 之 6.3 基于Schema的AOP ——跟我学spring3
- KeyValuePair<TKey, TValue>是DictionaryEntry的泛型版本
- 试验数据的保存