算法设计与分析 —— 分治
文章平均质量分 61
Konjac.k
这个作者很懒,什么都没留下…
展开
-
循环赛日程表(分治)
题目:有n=2^k个远动员选手,设计比赛日程表实现:(1)每个选手必须与n-1个选手比赛(2)每个选手一天只比赛一场(3)比赛共进行n-1天题意:略。思路:把n个选手分成两组,每组内进行比赛安排,每组内的安排又要继续分成两组,直到组内仅有两人,那么就是安排这两个人进行比赛,这也就是最小子问题。用递归直到最底层设初值,逐层赋值,二维数组打出表来。代码:#inc原创 2017-09-18 16:49:53 · 1000 阅读 · 0 评论 -
nlogn的二维最接近点对问题(分治)
题目:在二维平面上的n个点中,快速的找出最近的一对点。思路:分治,把平面上所有点按照x从小到大排序,分成两个集合,分别求出两个集合内的最接近点对,然后是这两个集合之间的最接近点对,二者取最小值则是整个问题的最终解。通过不断地递归分治,最终的状态只可能是只有两个点或者是只有三个点求最接近点对,也就是该问题的最小子问题,关键是在两个集合中与集合之间最接近点对的比较,详见代码。代码:原创 2017-09-19 21:02:20 · 1140 阅读 · 0 评论 -
合并排序问题
题目:对n个元素组成的序列进行排序。基本思想:将待排序元素分成大小大致相同的两个子集合,分别对两个集合进行排序,最终将排序好的子集合合并成所要求的排好序的集合。代码:#include using namespace std;void Copy(int *a,int *b,int left,int right){ for(int i=left; i<=right; i原创 2017-09-29 17:04:32 · 868 阅读 · 0 评论 -
集合最大元问题
题目:在规模为n的数据元素集合中找出最大元。当n=2时,一次比较就可以找出两个数据元素的最大元和最小元。当n>2时,可以把n个数据元素分为大致相等的两半,一半有n/2个数据元素,而另一半有n/2个数据元素。 先分别找出各自组中的最大元,然后将两个最大元进行比较,就可得n个元素的最大元代码:#include using namespace std;const int maxn=10原创 2017-09-29 17:05:23 · 1318 阅读 · 0 评论