一般具有以下特征的问题可以使用分治法来求解:
1.求解问题可以分解为若干个规模较小的相同问题;
2.求解问题的规模分解到一定的程度,就能够很容易的求解;
3.合并子问题的解可以得到求解问题的解;
4.由求解问题所分解出的各个子问题是相互独立的。
c语言程序实现:某学校举行乒乓球比赛,在初赛阶段设置为循环赛,设有n位选手参赛,初赛共进行N-1天,每位选手要与其他每一位选手进行一场比赛,然后按照积分排名选拔进入决赛的选手,根据学校作息时间,要求每位选手每天必须比赛一场,不能轮空。
#include <stdio.h>#define MAXN 64
int a[MAXN+1][MAXN+1] = {0};
void gamecal(int k, int n)//处理编号k开始的n个选手日期
{
int i,j;
if (n==2)
{
a[k][1]=k;
a[k][2]=k+1;
a[k=1][1]=k+1;
a[k+1][2]=k;
}
else{
gamecal(k,2/n);
gamecal(k+n/2,n/2);
for(i=k;i<k+n/2;i++)
{
for(