POJ 2479 Maximum sum[DP]
2014-03-10 22:09
459 查看
类似于HDU 1003 Max Sum这一题,只不过这里是说把数组分为两段,把这两段的最大子段和求出来相加,求出最大的这样的值。
方法还是DP,跟HDU1003一样,从i = 0 to n – 1求一次最大子段和,然后从i = n – 1 to 0求一次最大子段和,最后相加判断即可。
传送:
POJ 2479 Maximum sum http://poj.org/problem?id=2479
POJ 2593 Max Sequence http://poj.org/problem?id=2593
POJ 2479的AC代码如下(2593稍微改一下即可):
本文地址: 程序人生 >> POJ
2479 Maximum sum[DP]
作者:代码疯子(Wins0n) 本站内容如无声明均属原创,转载请保留作者信息与原文链接,谢谢!
方法还是DP,跟HDU1003一样,从i = 0 to n – 1求一次最大子段和,然后从i = n – 1 to 0求一次最大子段和,最后相加判断即可。
传送:
POJ 2479 Maximum sum http://poj.org/problem?id=2479
POJ 2593 Max Sequence http://poj.org/problem?id=2593
POJ 2479的AC代码如下(2593稍微改一下即可):
#include<iostream> #include<cstdio> using namespace std; #define maxnum 50000 int num[maxnum+10],l[maxnum+10],r[maxnum+10]; int main(){ //freopen("1.txt","r",stdin); int n; scanf("%d",&n); while(n--){ int m; scanf("%d",&m); int tmp=0; int res=-10001; for(int i=0;i<m;++i){ scanf("%d",&num[i]); tmp+=num[i]; if(tmp>res) res=tmp; if(tmp<0) tmp=0; l[i]=res; } tmp=0; res=-10001; for(int i=m-1;i>=0;--i){ tmp+=num[i]; if(tmp>res) res=tmp; if(tmp<0) tmp=0; r[i]=res; } int mymax=l[0]+r[1]; for(int i=1;i<m-1;++i){ if(l[i]+r[i+1]>mymax) mymax=l[i]+r[i+1]; } printf("%d\n",mymax); } return 0; }
本文地址: 程序人生 >> POJ
2479 Maximum sum[DP]
作者:代码疯子(Wins0n) 本站内容如无声明均属原创,转载请保留作者信息与原文链接,谢谢!
相关文章推荐
- poj 2479 Maximum sum 【DP】
- POJ 2479 Maximum Sum (DP)
- POJ2479 Maximum sum(dp)
- POJ 2479 Maximum sum (DP&双最大子段和)
- POJ-2479-Maximum sum-双向dp-2次连续区间和
- POJ 2479 Maximum sum(DP)
- POJ——2479 Maximum sum(dp)
- POJ 2479 Maximum sum(双向DP)
- poj2479——Maximum sum(dp)
- poj 2479 Maximum sum(DP)
- POJ 2479-Maximum sum(线性dp)
- POJ 2479 - Maximum sum(线性DP)
- POJ 2479 Maximum sum (DP)
- poj 2479 Maximum sum(简单dp,最大连续和拓展)
- POJ 1050 To the Max && POJ 2479 Maximum sum(DP最大连续子段和)
- POJ 2479-Maximum sum(线性dp)
- POJ2479 Maximum sum 最长连续子序列[DP]
- POJ2479 Maximum sum 最长连续子序列[DP]
- POJ - 2479 《Maximum sum》 【线性DP】
- 【动态规划(最大子序列和)】:poj2479,Maximum sum