C++最大子数组,递归实现,分治法

本文介绍了如何使用C++通过递归和分治法来求解最大子数组问题,详细阐述了算法思路和实现步骤。
摘要由CSDN通过智能技术生成

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往左找
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值