CI19.7-最大连续子段和
来源:互联网 发布:基于单片机汽车 编辑:程序博客网 时间:2024/05/18 02:55
给定一个整型数组a[],计算最大连续子段和。
例子:
输入:(2, -8, 3, -2, 4, -10)
输出:5 连续子段为(3, -2, 4)
思路:
典型的动态规划问题。对于DP,我们要先找到状态,然后再找到递推关系。定义d[i]为以a[i]结尾的最大连续子段和,那么递推关系为:如果d[i - 1] > 0,d[i] = d[i - 1] + a[i];否则d[i] = a[i]。最后的结果为max{d[i], 0 <= i < n}。我们注意到递推式中d[i]只与d[i - 1]有关系,所以可以将O(n)的空间降为O(1)。
#include <iostream>#include <vector>using namespace std;int MaxSum(const vector<int>& ivec, bool& check){if (ivec.size() == 0){check = false;return -1;}check = true;int res = INT_MIN;int sum = ivec[0];for (int i = 1; i < ivec.size(); ++i){if (sum > 0)sum += ivec[i];elsesum = ivec[i];if (res < sum)res = sum;}return res;}int main(){int n, m;vector<int> ivec;while (cin >> n){while (n--){cin >> m;ivec.push_back(m);}bool check;int res = MaxSum(ivec, check);if (check)cout << res << endl;elsecout << "invalid" << endl;}return 0;}
- CI19.7-最大连续子段和
- 最大连续子段和
- 最大连续子段和
- 最大连续子段和
- 最大连续子段和
- 最大连续子段和
- 最大连续子段和
- 最大连续子段和、M子段和
- DP -- 最大连续子段和
- noip2009初赛-最大连续子段和
- HDU_5586_Sum(最大连续子段和)
- hdu1003最大连续子段和
- HDU 1003 最大连续子段和
- 最大连续子段和dp
- 数组的连续最大子段和
- 最大连续子段和(hdu1003)
- BZOJ 5089: 最大连续子段和
- bzoj 5089: 最大连续子段和
- 开源的LEON项目
- 网站运营经理应具备的十大能力
- 同步与异步--阻塞与非阻塞型I/O
- ubuntu12启用root账户
- 一名合格的网站运营总监(COO)是怎样的?
- CI19.7-最大连续子段和
- 设计模式读书笔记
- int cdev_add(struct cdev *p, dev_t dev, unsigned count)
- CF 327 130719bnu
- c++创建对象
- 使用python定时采样linux cpu占用率
- codeforces 327
- eclipse maven plugin 插件 安装 和 配置
- [Android] ImageView.ScaleType设置图解