13.2—动态规划—Maximum Subarray

来源:互联网 发布:linux不保存退出 编辑:程序博客网 时间:2024/06/15 19:20
描述
Find the contiguous subarray within an array (containing at least one number) which has the largest sum.



#include<iostream>using namespace std;bool flag = true;int MAxmumSubarray(int a[], int n){if (a == NULL || n <= 0){flag = false;return 0;}int maxsum = a[0], cursum = a[0];int curbegin = 0, curend = 0;int begin = 0, end = 0;for (int i = 1; i < n; i++){if (a[i] + cursum < a[i]){cursum = a[i];curbegin = i;}else{cursum += a[i];curend = i;}//===if (cursum > maxsum){maxsum = cursum;begin = curbegin;end = curend;}}cout << begin << " " << end << endl;return maxsum;}int main(){const int n = 9;int a[n] = { -2, 1, -3, 4, -1, 2, 1, -5, 4 };int res = MAxmumSubarray(a, n);cout << "MAxmumSubarray:" << res << endl;}

阅读全文
0 0