#include<stdio.h>
int max(int a,int b)
{
if (a > b)return a;
else return b;
}
int sumMax(int *a,int left,int right)//分治法的核心思想这里全都有。
{
if (left+1 >= right)return max(a[left],a[right]); //1.第一步进行判断
int n = (left+right)/2; //2.确认分界值
int mmm = max(sumMax(a,left,n),sumMax(a,n+1,right));//3.进行拆分递归。
return mmm;
}
int main()
{
int a[10] = {5,6,2,1,50,78,10,2,1,7};
int p = sumMax(a,0,9);
printf("%d",p);
return 0;
}
另外的分治法还有快速排序。
分治法的小感悟
最新推荐文章于 2021-12-13 17:14:36 发布