给定一个整数序列,其中有些是负数,有些是正数,从该序列中找出最大和的子序列。比如:-5,20,-4,10,-18,子序列[20,-4,10]具有最大和26。 /*给定一个整数序列,其中有些是负数,有些是正数, 从该序列中找出最大和的子序列。比如:-5,20,-4,10,-18,子序列[20,-4,10] 具有最大和26。*/ #include <cstdlib> #include <iostream> using namespace std; void getMaxSeq(int val[], int count) { int sum = 0, b = 0; int start = -1, end; for(int i=0; i<count; i++) { if(b > 0) b += val[i]; else b = val[i]; if(b > sum) { if(start == -1) start = i; end = i; sum = b; } } for(int i=start; i<=end; i++) cout << val[i] << " "; cout << endl; } int main(int argc, char *argv[]) { int val[] = {-5, 20, -4, 10, -18}; getMaxSeq(val, sizeof(val) / 4); system("PAUSE"); return EXIT_SUCCESS; }