dp 最大字段和 问题
来源:互联网 发布:mac版c4d 编辑:程序博客网 时间:2024/05/29 17:15
最大字段和 最暴力的算法就是
int s = 0;//起始位置int e = 0; //结束位置int max = 0;for(int i = 1; i <= n; ++i){ for(int j = i; j <= n;++j) { int sum = 0; for(int k = i; k <=j; ++k) sum += a[k]; if(sum > max) { s = i; e = j; max = sum; } }}显然 时间复杂度O(n^3) 可想而知 必然超时 ,
因此优化操作 用一个sum 直接加 这样复杂度变成O(n^2) 但是 对于数据来说 仍会超时
for(int i = 1; i <= n; ++i) { int sum = 0; for(int j = i; j <= n;++j) { sum += a[j]; if(sum > max) { start = i; end = j; max = sum; } } }
这是我们用dp 思想来 dp[i]=max(dp[i],dp[i]+a[i]); 这样 复杂度就是O(n)74
77
for(int i = 1; i <= n; ++i) { if(b[i-1]>0) { b[i] = b[i-1]+a[i]; }else{ b[i] = a[i]; } if(b[i]>max) max = b[i]; }因此最大字段和就是max
但是 这样 我们却没有记录起始点和终点 我们又可以这样操作
s=e=temp=1; for(i=1;i<=n;i++) { scanf("%d",&x); sum+=x; if(sum>max) { max=sum; s=temp; e=i; } if(sum<0) { sum=0; temp=i+1; } }
0 0
- dp 最大字段和 问题
- 最大字段和DP
- DP之简单的求最大字段和问题
- 51NOD 最大子字段和问题(DP入门)
- DP最大字段和算法
- 最大字段和小结 DP
- 最大字段和问题
- 最大字段和问题
- 最大字段和问题
- 最大字段和问题
- 最大字段和问题
- 最大字段和问题
- 最大字段和问题
- dp 最大连续字段和 郁闷了
- hdu1231 最大连续字段和(DP)
- hdu3415 dp最大k字段和
- dp学习——最大字段和
- 51 nod 循环最大字段和 DP
- hive添加自定义认证类 CustomHiveServer2Auth.java
- 深度学习入门实战(二)-用TensorFlow训练线性回归
- acm杭电HDU1232畅通工程 并查集 模板题
- HDU 4405 Aeroplane chess(全期望公式-概率dp)
- Linux进程之僵尸进程和孤儿进程简析
- dp 最大字段和 问题
- C# string类型小结 (学习日记 2017-04-26)
- Ssm框架整合整体思路
- 1030. 完美数列
- 4.2final关键字
- angularJS入门
- Jenkins + Git + Maven + tomcat集成环境(Jenkins 安装)
- 一条SQL搞定信息增益的计算
- C++函数mysql_use_result获取mysql数据库中的数据中文显示为“?”