最大子串和

来源:互联网 发布:linux vim复制多少行 编辑:程序博客网 时间:2024/05/19 17:56


//求序列A0,A1,A2...An-1中子串的和的最大值//思想(动态规划):如果A0...Ai-1 子串最大和为maxSum,并且包含Ai-1的子串最大和为curSum,那么A0...Ai的子串最大和是curSum+A[i],A[i],maxSum三个的最大值#include<iostream>using namespace std;int max(int a, int b){return(a> b ? a : b);}int MaxSubString(const int *A, int n){int curSum = A[n - 1];int maxSum = A[n - 1];for (int i = n - 2; i >= 0; i--){curSum = max(A[i], A[i] + curSum);maxSum = max(maxSum, curSum);}return maxSum;}int main(){int A[9] = {1,5,-1,8,-7,5,4,-3,2};cout << MaxSubString(A, 9)<<endl;//结果是15:1+5-1+8-7+5+4system("pause");return 0;}


0 0
原创粉丝点击