一、分治策略基本思想
1、Divide
将原始问题划分或者归结为规模较小的子问题(多数情况下是划分成2个)
2、Conquer
递归或迭代求解每个子问题
3、Combine
将子问题的解综合得到原问题的解
注意:
1、子问题与原始问题性质完全一样
2、子问题之间可彼此独立地求解
3、递归停止时子问题可直接求解
比较典型的应用例子是“归并排序法”和“快速排序法”,详细可以参考屈婉玲等编著的《算法设计与分析》(第2版)P26和P37,此处不再赘述。
二、题目分析和建模
1. 问题描述
设有n=2k个选手要进行比赛,设计的比赛日程表需要满足以下要求:
1)每个选手必须与其他n-1个选手各赛一次;
2)每个选手一天只能赛一次;
3)整场循环赛一共进行n-1天。
2. 题目建模
将比赛日程表设计成n行×n-1列的一个表,表中第i行第j列的元素表示第i个选手在第j天所遇到的选手。
(1)首先看只有两个选手的日程表(k=1,n=2,2行×1列表格,循环赛进行1天):