【dp】最大子段和问题及其拓展
2017-03-12 00:02
218 查看
最大子段和
题目描述:给定长度为n的整数序列,a[1…n], 求[1,n]某个子区间[i , j]使得a[i]+…+a[j]和最大.或者求出最大的这个和.例如(-2,11,-4,13,-5,2)的最大子段和为20,所求子区间为[2,4].int b=0,ans=0; for(int i=1;i<=n;i++) { if(b>0) b+=a[i]; else b=a[i]; ans=max(ans,b); }
最大子矩阵和
题目链接:最大子矩阵和将两维压缩为一维,就转为了上面的问题。
#include<iostream> #include<stdio.h> #include<algorithm> #include<string.h> #include<math.h> #define ll long long #define inf 0x7f7f7f7f using namespace std; int n,mp[405][405]; int main() { while(~scanf("%d",&n)) { int mx=-inf; for(int i=0;i<n;i++) { int tmp=0; for(int j=0;j<n;j++) { scanf("%d",&mp[i][j]); if(tmp>0) tmp+=mp[i][j]; else tmp=mp[i][j]; mx=max(tmp,mx); } } for(int i=0;i<n;i++) for(int j=i+1;j<n;j++) { int tmp=0; for(int k=0;k<n;k++) { mp[i][k]+=mp[j][k]; if(tmp>0) tmp+=mp[i][k]; else tmp=mp[i][k]; mx=max(tmp,mx); } } printf("%d\n",mx); } return 0; }
最大子立方体和
基本同上,不做赘述。相关文章推荐
- [DP]FJSDFZOJ 1386 最大连续子段和问题
- HDU1024 DP的优化 最大M子段和问题
- Java使用Oracle遇到的最大游标超出问题及其解决方法
- POJ 1952 BUY LOW BUY LOWER 【DP】最长降序子序列及其计数问题
- 最大子序列问题及其求解
- POJ 1976 A Mini Locomotive (DP 最大连续m子段和)
- POJ 1976 A Mini Locomotive (DP 最大连续m子段和)
- 最大K乘积问题(DP专题)
- 最大子段和问题,最大子矩阵和问题,最大m子段和问题
- 动态规划求解最大字段和及其变种问题
- 【dp】最大长方体问题
- hdu 1024Max Sum Plus Plus 最大M段字段和 单调优化DP 从一类单调性问题看算法的优化
- 最大子矩阵问题;枚举行的组合,然后利用一维最大子段和的DP算法;
- 连续子串的最大值(经典的DP问题)
- 最大子段和问题及其推广
- 最大子序列问题及其求解
- 经典的求数组中最大值及其位置的问题.
- 树上的动态规划;树的最大独立集;刷表DP,子问题彼此独立没有交集; 无根树转化有根树;
- 最大子序列和问题 二维最大子序列核问题及其优化
- Java使用Oracle遇到的最大游标超出问题及其解决方法