杭电OJ(HDOJ)1003题:Max Sum(动态规划)
2014-12-05 20:36
435 查看
题意:
先给出测试用例的次数T(1<=T<=20),现输入一个正整数N(1<=N<=100000),接着是N个数a( -1000 <=a<=1000)。对于每一行先输出Case #:换行输出整数序列输出最大连续子序列的和以及开始和结束的下标。
示例输入:
2
5 6 -1 5 4 -7
7 0 6 -1 1 -6 7 -5
示例输出:
Case 1:
14 1 4
Case 2:
7 1 6
解决方案:
注意输出的格式,最后一个Case没有换行,基本与1231题(点击打开链接)一样。
使用贪心写一个,结果一样,但提交失败,可能哪里有逻辑错误,请指出。
先给出测试用例的次数T(1<=T<=20),现输入一个正整数N(1<=N<=100000),接着是N个数a( -1000 <=a<=1000)。对于每一行先输出Case #:换行输出整数序列输出最大连续子序列的和以及开始和结束的下标。
示例输入:
2
5 6 -1 5 4 -7
7 0 6 -1 1 -6 7 -5
示例输出:
Case 1:
14 1 4
Case 2:
7 1 6
解决方案:
注意输出的格式,最后一个Case没有换行,基本与1231题(点击打开链接)一样。
#include"stdio.h" main() { int max,start,temp,end,sum,i,j,t,n,a[100001]; scanf("%d",&t); for(j=1;j<=t;j++) { scanf("%d",&n); for(i=1;i<=n;i++) scanf("%d",a+i); max=a[1]; sum=0; temp=start=end=1; for(i=1;i<=n;i++) { sum+=a[i]; if(sum>max) { max=sum; start=temp; end=i; } if(sum<0) { sum=0; temp=i+1; } } printf("Case %d:\n",j); printf("%d %d %d\n",max,start,end); if(j<t) putchar(10); } }
使用贪心写一个,结果一样,但提交失败,可能哪里有逻辑错误,请指出。
相关文章推荐
- 杭电oj-1003-Max Sum
- 杭电OJ 1003题 动态规划 最大连续序列和
- HDOJ 1003 Max Sum(动态规划)
- 杭电OJ(HDOJ)1231题:最大连续子序列(动态规划)
- 【杭电oj】1003 - Max Sum(最大子序列的和)
- Max Sum(杭电OJ1003)解题报告
- HDOJ 1003 Max Sum(动态规划)
- 【杭电-oj】-1003-Max Sum
- 杭电 hdoj 1003 动态规划 c语言题解
- HDOJ 1003 Max Sum(新手动态规划)
- HDOJ 1003 Max Sum 杭电 ACM
- hdoj 1003 Max Sum(动态规划)
- 杭电oj(java版)——1003 Max Sum
- 杭电OJ 1003 Max Sum
- HDOJ 1003 Max Sum 动态规划入门(
- HDOJ 1003 Max Sum(动态规划)
- HDOJ 1003 Max Sum(动态规划)
- 杭电OJ 1003 最大子序列(分治法)Max Sum
- 杭电1003——Max Sum(最大连续子序列和、递归分治)
- Max Sum 杭电 1003