【程序员必会十大算法】之分治算法(汉诺塔问题)

发布时间:2022-07-05 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了【程序员必会十大算法】之分治算法(汉诺塔问题)脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

1.应用

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

2.汉诺塔问题

public static void main(String[] args) {
        int[] arr = {1,1,2,2,33};
        hanoITower(3,'A','B','C');
    }

public static void hanoiTower(int num,char a,char b,char c){
	   if (num == 1){
	       System.out.PRintln("将第1个盘从"+ a +"移动到" + c);
	   }else {
	       //将上面的盘从a移动到c,移动过程中会经过b
	       hanoiTower(num - 1,a,c,b);
	
	       //将最下面的盘从a移动到c
	       System.out.println("将第"+ num +"个盘从" + a + "移动到" + c);
	
	       //将B塔的所有盘从b移动到c 移动过程会用到a
	       hanoiTower(num - 1,b,a,c);
	   }
}

结果

将第1个盘从A移动到C
将第2个盘从A移动到B
将第1个盘从C移动到B
将第3个盘从A移动到C
将第1个盘从B移动到A
将第2个盘从B移动到C
将第1个盘从A移动到C

脚本宝典总结

以上是脚本宝典为你收集整理的【程序员必会十大算法】之分治算法(汉诺塔问题)全部内容,希望文章能够帮你解决【程序员必会十大算法】之分治算法(汉诺塔问题)所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。