汉诺塔问题
来源:互联网 发布:ubuntu安装numpy 编辑:程序博客网 时间:2024/06/08 09:23
import java.util.Scanner;public class TowersOfHanoi { private static int m = 0;// 标记移动次数 // 实现移动的函数 public static void move(int disks, char N, char M) { System.out.println("第" + (++m) + " 次移动 : " + " 把 " + disks + " 号圆盘从 " + N + " ->移到-> " + M); } /** * 汉诺塔问题——递归实现 * * @param n——圆盘个数 * @param A——起始塔 * @param B——辅助塔 * @param C——目标塔 */ public static void hanoi(int n, char A, char B, char C) { // 圆盘个数为1时,直接将其从A塔移动到C塔 if (n == 1) TowersOfHanoi.move(1, A, C);// 将编号为1的圆盘从A移到C // 圆盘个数大于1时,递归求解 else { hanoi(n - 1, A, C, B);// 递归,把A塔上编号1~n-1的圆盘移到B上,以C为辅助塔 TowersOfHanoi.move(n, A, C);// 把A塔上编号为n的圆盘移到C上 hanoi(n - 1, B, A, C);// 递归,把B塔上编号1~n-1的圆盘移到C上,以A为辅助塔 } } public static void main(String[] args) { Scanner input = new Scanner(System.in); char A = 'A'; char B = 'B'; char C = 'C'; System.out.println("***********************************************************"); System.out.println("汉诺塔问题——将A塔上编号从小到大的圆盘从A塔通过B辅助塔移动到C塔上"); System.out.println("***********************************************************"); System.out.print("请输入圆盘的个数:"); int disks = input.nextInt(); TowersOfHanoi.hanoi(disks, A, B, C); System.out.println(">>共移动 " + m + " 次,将A上的圆盘都移动到C上"); input.close(); }}
阅读全文
0 0
- 汉诺塔问题 背包问题
- 递归问题,汉诺塔问题
- 汉诺塔问题
- 汉诺塔问题
- 汉诺塔问题
- 汉诺塔问题
- 汉诺塔问题
- 汉诺塔问题
- 汉诺塔问题
- 汉诺塔问题
- 汉诺塔问题
- 汉诺塔问题
- 汉诺塔问题.
- 汉诺塔问题
- 汉诺塔问题
- 汉诺塔问题
- 汉诺塔问题
- 汉诺塔问题
- submit,re,eval
- 深入了解MyBatis参数
- lintcode -- 线段树的构造
- 原生js获取select的option项的label和value值
- POJ
- 汉诺塔问题
- 术--经典题解析(1)
- CSS盒子模型和部分选择器
- Oracle中通过substr和instr实现截取指定字符之间的字符串:
- luogu1967 货车运输
- 自定义控件三部曲之绘图篇——Path之贝赛尔曲线和手势轨迹、水波纹效果
- java读书笔记-Thread类
- 盒子模型、元素定位、选择器
- 服务器 centOS7 部署步骤