HDU 1003 max sum
来源:互联网 发布:舒同 书法 知乎 编辑:程序博客网 时间:2024/06/02 02:24
最大连续子序列问题
dp做法
#include<bits/stdc++.h>using namespace std;int a[100020],dp[100020],l[100020],r[100020];int main(){ int T,N; scanf("%d",&T); for(int kase=1;kase<=T;kase++) { scanf("%d",&N); for(int i=1;i<=N;i++) scanf("%d",&a[i]); dp[0]=0; dp[0]=0,l[0]=1,r[0]=0; for(int i=1;i<=N;i++) { if(dp[i-1]+a[i]>=a[i]) { dp[i]=dp[i-1]+a[i]; r[i]=r[i-1]+1; l[i]=l[i-1]; } else { dp[i]=a[i]; l[i]=i; r[i]=i; } } int ans=INT_MIN; int L,R; for(int i=1;i<=N;i++) { if(dp[i]>ans) { ans=dp[i]; L=l[i]; R=r[i]; } } if(kase!=1) printf("\n"); printf("Case %d:\n",kase); printf("%d %d %d\n",ans,L,R); } return 0;}
非dp做法
#include<bits/stdc++.h>using namespace std;int main(){ int a[100020]; int K,T; scanf("%d",&T); for(int i=1;i<=T;i++) { scanf("%d",&K); for(int j=1;j<=K;j++) scanf("%d",&a[j]); int s=0,l=1; int L=1,R=1; int M=a[1]; for(int j=1;j<=K;j++) { s+=a[j]; if(s>M) { L=l; M=s; R=j; } if(s<0) { s=0; l=j+1; } } printf("Case %d:\n",i); printf("%d %d %d\n",M,L,R); if(i!=T) printf("\n"); } return 0;}
0 0
- HDU 1003 Max Sum
- hdu 1003 Max Sum
- hdu 1003 Max Sum
- HDU-1003 max sum
- HDU 1003 - Max Sum
- HDU 1003 Max Sum
- hdu 1003 Max Sum
- HDU 1003 Max Sum
- HDU 1003 Max Sum
- hdu 1003 max sum
- HDU 1003 Max Sum
- hdu 1003 Max Sum
- HDU 1003 Max Sum
- hdu 1003 Max Sum
- HDU 1003 Max Sum
- Hdu 1003 - Max Sum
- HDU-1003-Max Sum
- hdu - 1003 - Max Sum
- C++中数组参数详解
- 让你提前认识软件开发(18):C语言中常用的文件操作函数总结及使用方法演示代码
- python学习之二(3.4下使用matploylib)
- PHP对XML的支持
- Spring中多配置文件以及寻觅引用其他bean的方式
- HDU 1003 max sum
- Could not resolve archetype org.apache.maven.archetypes:maven-archetype-quickstart:
- Mongodb简介
- Hadoop 权限管理
- nyoj 461
- To the Max-动态规划 树状数组
- 视频主观质量评价工具:MSU Perceptual Video Quality tool
- C#属性与字段
- Python快速入门