C++最大子数组,递归实现,分治法
// 寻找最大子数组-递归.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//递归法寻找最大子数组
#include <iostream>
#include <ctime>
#include<Windows.h>
#include <cstdlib>
using namespace std;
//函数只可以return一个值,如果想返回多值,可以
///1:使用结构 struct
/*struct Result
{
int add;
int sub;
}*/
///2:输出参数
/*
int operation(int a,int b,int &sub)
{
sub=a-b;
return a+b;
}
*/
//寻找最大的跨越中点的子数组sub_array
//思路:从中点mid开始,往左边依次找,一个最大的子数组max_left
// 往右边依次找,一个最大的子数组max_right
// 把两个数组合起来,就是穿越中点的最大子数组max_sum
int Find_Max_Crossing_Subarray(int* A, int low, int mid, int high, int& max_left, int& max_right, int& max_sum)
{
int left_sum = -99999; //设置不可能的哨兵牌(不可能值)
int sum1 = 0;
//int max_left = 0; 此处,max_left已经有定义,无需再写
for (int i = mid; i >= low; i--) //从mid往左找