HDOJ 1003Max Sum (dp)
来源:互联网 发布:淘宝童装摄影 编辑:程序博客网 时间:2024/06/05 00:09
This is original link to the problem
this question is a typical dp problem .It’s need us to find the maximum sub region sum,and I tear apart the equation of dp to find the start point and terminate point .
#include<bits/stdc++.h>#include <cstring>#define maxn 100005int dp[maxn];int num[maxn];int st[maxn];int en[maxn];using namespace std;int T=0;void islast(int t){ if(t!=T) { printf("\n"); }}int main(){ scanf("%d",&T); for(int t=1;t<=T;t++) { memset(dp,0,sizeof(dp)); memset(en,0,sizeof(en)); memset(st,0,sizeof(st)); int n=0; int cnt=0,minus_n = -99999999,minus_index; scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&num[i]); if(num[i]<0) { cnt++; if(minus_n < num[i]) { minus_index = i; minus_n = num[i]; } } } if(cnt==n) { printf("Case %d:\n",t); printf("%d %d %d\n",minus_n,minus_index,minus_index); islast(t); continue; } dp[1] = num[1]; en[1] = st[1] = 1; int ans=-1,index; for(int i=2;i<=n;i++) { //dp[i] = max(dp[i-1],0)+num[i]; if(dp[i-1]>=0) { dp[i] = num[i]+dp[i-1]; en[i] = i; st[i] = st[i-1]; } else { dp[i] = num[i]; st[i] = en[i] = i; } if(ans < dp[i]) { ans = dp[i]; index = i; } } /*for(int i=0;i<=n;i++) { cout<<dp[i]<<" "<<st[i]<<" "<<en[i]<<endl; }*/ printf("Case %d:\n",t); printf("%d %d %d\n",ans,st[index],en[index]); islast(t); //cout<<ans<<" "<<st[index]<<" "<<en[index]<<endl; //cout<<dp[n]<<" "<<st[n]<<" "<<en[n]<<endl; } return 0;}
阅读全文
0 0
- Max Sum--hdoj 1003 dp
- hdoj 1003 Max Sum【dp】
- HDOJ 1003-Max Sum【DP】
- HDOJ 1003Max Sum (dp)
- DP专题2 HDOJ 1003 Max Sum
- HDOJ 1003 Max Sum(DP,思维)
- 简单DP HDOJ 1003 MAX SUM
- HDOJ(HDU).1003 Max Sum (DP)
- HDOJ 1003 Max Sum
- HDOJ 1003 Max Sum
- hdoj 1003 Max Sum
- HDOJ 1003 Max Sum
- hdoj 1003Max Sum
- HDOJ 1003 Max Sum
- HDOJ 1003 Max Sum
- HDOJ--1003Max Sum
- hdoj 1003 Max Sum
- HDOJ 1003 Max Sum
- 单例模式
- csv.Error: iterator should return strings, not bytes
- QtWidget: 自定义不规则窗体与按钮
- Android NavigationBar(菜单栏,导航栏)问题记录
- Java基础入门(四)选择结构
- HDOJ 1003Max Sum (dp)
- 解决Mysql中只能通过localhost登陆不能通过ip登陆的问题
- fragment下找不到getWindowManager() getLayoutInflater()方法
- ldconfig 创建连接名字
- Hash 函数的现状,2012
- Educational Codeforces Round 22-B. The Golden Age-暴力枚举+map
- jdbcTemplate使用的简单笔记
- java中的异常
- 简单理解Socket