递归和分治策略的算法总结

前面说几句看到一篇关于企业需要什么人才的文章,里面写的是:一切都是关于选择,“你想过普通的生活,就会遇到普通的挫折。你想过上最好的生活,就一定会遇上最强的伤害。”“如果你受不了,想过普通人的生活,可以尝试跳到其他行业。这并不是什么丢人的事情。”

言归正传

1.二分搜索技术

2.大整数乘法

3.棋盘覆盖

4.合并排序和快速排序

5.循环赛日程表

都有用到递归的思想:

排列问题的思想就是拿出一个和其他进行排列,一共有N个元素就是分别拿出N个,和其他的N-1个排列。

整数划分问题思想就是q(m,n)考虑四种情况,m=1和n=1的情况;再就是n<m;然后就是n=m;最后就是n>m>1;

Hanoi塔问题:两次递归;主要是需要利用塔座C作为辅助塔座。此时要设法将n-1个较小的圆盘依照移动规则从塔座a移至塔座c上。

二分搜索技术的思想就是分治策略,充分利用元素间的次序关系,将N个元素分成个数大致相同的两半。

大整数的乘法思想其实是将乘法的次数变为三次了,以前需要的是四次,现在专门用了一个算法计算出两个数的和,之后就减少了一次乘法,然后算法复杂度就高了!

棋盘覆盖的思想就是递归;用一个二维整型数组Board表示棋盘。Board[0][0]是棋盘的左下角方格,title是算法中的一个全局变量,用来表示L型骨牌的编号,其初始值为0.在棋盘覆盖问题中,要用4种不同形态的L型骨牌覆盖一个给定的特殊棋盘上除特殊方格以外的所有方格;

合并排序的思想就是分治策略,将待排序元素分成大小大致相同的两个子集和,分别对两个子集和进行排序,最终将排序好的子集和合并成所要求的排好序的集合。

快速排序的思想是基于分治策略的另一个排序算法,其基本思想是,对于输入的子数组a[p:r],按以下三个步骤进行排序。分解;递归求解;合并;

循环赛日程表,也是分治思想,按照要求可将比赛日程表设计成有n行和n-1列的表。在表中第i行和第j列处填入第i个选手在第j天所遇到的选手。




你可能感兴趣的:(递归和分治策略的算法总结)