第三章看了由于数学基础不是太好,看的似懂非懂,有点模糊,就跳过去了。等有时间了好好学下数学,然后重头再看一遍。以下是最大子数组的递归算法和暴力算法的C++实现,递归算法是按着伪代码写的
#include "stdafx.h"
#include <iostream>
using namespace std;
int findMaxCorssingSubarray(int a[], int low, int mid, int high);
int findMaximumSubarray(int a[], int low, int high);
int main(){
int a[] = { 13, -3, -25, 20, -3, -16, -23, 18, 20 - 7, 12, -5, -22, 15, -4, 7 };
cout << findMaximumSubarray(a,0,15) << endl;
return 0;
}
int findMaximumSubarray(int a[], int low, int high){
if (low == high)
{
return a[low];
}
else
{
int mid = (low + high) / 2;
int leftSum = findMaximumSubarray(a, low, mid);
int rightSum = findMaximumSubarray(a, mid + 1, high);
int crossSum = findMaxCorssingSubarray(a, low, mid, high);
if (leftSum >= rightSum && leftSum >= crossSum)
{
return leftSum;
}
else if(rightSum>=leftSum && rightSum>=crossSum)
{
return rightSum;
}
else
{
r


1688

被折叠的 条评论
为什么被折叠?



