您的位置:首页 > 其它

求连续子数组的最大和

2014-04-08 23:19 190 查看
题目来源:《剑指offer》面试题31,《编程珠玑》第八章,LeetCode OJ的Maximum Subarray。

题目大意:

输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的最大和。

例如,数组为{1,-2,3,10,-4,7,2,-5},和最大的子数组为{3,10,-4,7,2},因此返回的结果为子数组的和18.

来自Google,微软等很多知名公司的面试题,2005年浙江大学计算机系的考研题的最后一道程序设计题,貌似是风靡一时的一道题。

参考链接程序员编程艺术:第七章、求连续子数组的最大和程序员面试题精选100题(03)-子数组的最大和

解题思路:

解法一:O(n3)

最最简单粗暴的解法,就是列出数组的所有子集,然后一一计算总和,记录最大值。

不多说,伪代码就是这样:

int main(){
int a[] = {1,-2,3,10,-4,7,2,-5};
int sum = FindGreatestSumOfSubArray(a,sizeof(a)/sizeof(int));
//int sum = MaxSum(a,sizeof(a)/sizeof(int));
//int sum = maxsum3(a,0,14);
cout << sum << endl;
getchar();
return 0;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: