1007. Maximum Subsequence Sum 解析

来源:互联网 发布:java 权限系统设计 编辑:程序博客网 时间:2024/05/17 01:31

这个题要理解最大子序列的一个很溜的算法。累加和为负的时候舍弃。当累加和大于之前最大的和的时候更新。具体我有点说不明白呢。。。

#include <iostream>#include <vector>using namespace std;vector <int> Sub;int main() {int N;int temp;cin >> N;bool tag;int sum = 0;int h = 0, t = 0;int maxh = 0,  maxsum = -1;//若全为负 for (int i = 0; i < N; i++) {cin >> temp;Sub.push_back(temp);sum += Sub[i];if (sum > maxsum) {t = i;maxh = h;maxsum = sum;}else if (sum < 0){h = i + 1;sum = 0;}}if (maxsum >= 0)cout << maxsum << " " << Sub[maxh] << " " << Sub[t] << endl;else{cout << "0" << " " << Sub[0] << " " << Sub[N-1] << endl;}return 0;}


0 0
原创粉丝点击