题目连接:http://acm.hdu.edu.cn/diy/contest_showproblem.php?pid=1001&cid=18563&hide=0
题目陷阱:
1、这道题需要考虑到如果数组中的数都是负数。开始没有考虑到,结果就wrong answer了。
2、AC这个事情,有时候明明觉得自己的代码是对的,就是不能A,好痛苦啊。有时间的时候再好好琢磨吧。先放这里。
参考代码:
#include <stdio.h> int a[100000]; void main() { int t; int c; int n; int i; int sum,pres,pree; int temp,s,e; scanf("%d",&t); c = 1; while(t--) { scanf("%d",&n); for(i = 0; i < n; ++i) { scanf("%d",&a[i]); } sum = -1000; temp = 0; s = 0; e = 0; for(i = 0; i < n; ++i) { temp += a[i]; if(temp >= 0) { e = i; if(temp > sum) { pree = e; pres = s; sum = temp; } } else { if(temp > sum) { pree = e; pres = s; sum = temp; } s = i + 1; e = i + 1; temp = 0; } } printf("Case %d:\n%d %d %d\n\n", c++,sum, pres + 1, pree + 1); } }
为什么会提示说输出格式错误呢,明明就是对的。
PS:我后来想到了,可能是在输出的最后,我多输入了一个换行符,这样就是错的,可是我怎么样才能保证两个测试样例之间有一个换行呢?