分治算法
2023-11-16 16:35 钟铧若岩 阅读(9) 评论(0) 编辑 收藏 举报 1、基本介绍
分治算法是非常重要的一种算法,基本思想就是将一个大问题化解成俩个或多个子问题,直到子问题可以直接求解为止,将每个子问题的解合并。如:归并排序,汉诺塔问题,快速排序...
2、基本步骤
分治法在每一层递归上都有三个步骤:
(1)、分解:将原问题分解为若干个规模较小,相互独立,与原问题形式相同的子问题
(2)、解决:若子问题规模较小而容易被解决则直接解,否则递归地解各个子问题
(3)、合并:将各个子问题的解合并为原问题的解。
————————————————
版权声明:本文为CSDN博主「鲨瓜2号」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/aetawt/article/details/122239186
1 /** 2 * 汉诺塔 3 * 4 * @param n 盘子的数量 5 * @param a A柱 6 * @param b B柱 7 * @param c C柱 8 */ 9 private static int count = 0; //用来记录移动次数 10 11 public static void hanoiTower(int n, char a, char b, char c) { 12 count++; 13 if (n == 1) { 14 //如果只有一个盘子,直接放到C盘 15 System.out.println("第1个盘子:" + a + "-->" + c); 16 } else { 17 //如果盘子>=2 18 //第一步:将A柱除了最后一个盘子的所有的盘子借助C柱放到B柱 19 hanoiTower(n - 1, a, c, b); 20 //第二步:将A柱上最后一个盘子放到C柱 21 System.out.println("第" + n + "个盘子:" + a + "-->" + c); 22 //第三步:将B柱上所有的盘子借助A柱放到C柱 23 hanoiTower(n - 1, b, a, c); 24 } 25 }