基础知识去看B站视频
说明:
1、分治与递归的区别
分治法是指一种算法(分而治之,逐步细化地处理);
递归是指一种实现(函数中调用自身)
分治法也可以不用递归实现,比如自己用一个堆栈去模拟。
总之前者是思路,后者是做法。
我们做家务,也可以用分治法,我们管理一个组织,也可以用分治法,但是这就和编程完全无关了。
2、分治算法的应用:
快速排序等
关于视频中的例题,我的代码:
#include <iostream>
using namespace std;
int solve(int coin[],int low,int high){
int sumLeft = 0,sumRight = 0,sumMid = 0;
int ans;//这里写ans是为了递归的最终(最外层函数)返回
if(low + 1 == high){
//说明分治到了最后还剩两个数组的元素
if(coin[low] > coin[high]){
ans = high + 1;
return ans;
}else{
ans = low + 1;
return ans;