博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法——分治算法(汉诺塔的实现 Java代码)
阅读量:3960 次
发布时间:2019-05-24

本文共 746 字,大约阅读时间需要 2 分钟。

分治法是一种很重要的算法。字面上的解释是“分而治之”.就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题,直到最后子问题可以简单的直按求解,原问题的解即子问题的解的合井。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并撞序),傅立叶变换(快速傅立叶变换)。

使用分治算法可以解决排序当中的归并排序:

➢ 汉诺塔游戏的演示和思路分析: .

  1. 如果是有一个盘,A->C
  2. 如果我们有n>=2情况,我们总是可以看做是两个盘1.最下边的盘2.上面的盘
    1. 先把最上面的盘A->B
    2. 把最下边的盘A->C
    3. 把B塔的所有盘从B~>C

代码实现:

package DivideConquer;public class Hanoitower {
public static void main(String[] args) {
move(5, 'A', 'B', 'C'); } // 移动方法 public static void move(int num, char a, char b, char c) {
// 如果只有一个 if (num == 1) {
System.out.println("第 1个盘,从 "+ a + " -> " + c); } else {
//把最上面的所有盘移动到b move(num - 1, a, c, b); //把最下面的盘移到c System.out.println("第 " + num + "个盘,从 " + a + " -> " + c); //把b上剩余的移到c move(num - 1, b, a, c); } }}

进行测试:

在这里插入图片描述

转载地址:http://mgmzi.baihongyu.com/

你可能感兴趣的文章
golang ubuntu 配置 笔记
查看>>
vim 常用命令
查看>>
golang 开源项目
查看>>
ubntu 开发服务进程
查看>>
linux 常用命令以及技巧
查看>>
记录1年免费亚马逊AWS云服务器申请方法过程及使用技巧
查看>>
golang文章
查看>>
一些特殊的符号
查看>>
shell脚本的exit问题(退出脚本还是退出终端)
查看>>
linux export命令参数及用法详解--linux设置环境变量命令
查看>>
Shell单引号,双引号,反引号,反斜杠
查看>>
Qt中内存泄露和退出崩溃的问题
查看>>
常见颜色
查看>>
Source Insight 经典教程
查看>>
快速打开菜单附件中的工具
查看>>
Windows系统进程间通信
查看>>
linux exec的用法
查看>>
C语言中如何使用宏
查看>>
Http与RPC通信协议的比较
查看>>
Source Insight的对齐问题
查看>>