
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
long long n,m,start,end,temp,MAX;
int e,f,k;
int a[100010];//注意题目条件限制
while(scanf("%d",&n) !=EOF){
k=1;
while(n--){
start=end=0;
cin>>m;
for(int i=0;i<m;i++)
cin>>a[i];
temp=0;
MAX=-100000000;//最小可能值
start=e=1;
f=1;
for(int i=0;i<m;i++){
temp+=a[i];
if(temp>MAX){
e=start;
f=i;
MAX=temp;
}
if(temp<0){
start=i+1;
temp=0;
}
}
cout<<"Case "<<k++<<':'<<endl;
cout<<MAX<<' '<<e<<' '<<f+1<<endl;
if(n>0)
cout<<endl;
}
}
return 0;
}
上面的代码自己测试没看出来有什么问题,但是提交时老是 Wrong Answer,心态崩了。。。
下面是通过的代码:
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int n,m,i,j,end,begin,temp,max;
int e,f,k,flag=1;
int a[100005];
scanf("%d",&n);
k=1;
while(n--)
{
begin=end=0;
scanf("%d",&m);
for(i=1;i<=m;i++)
{
scanf("%d",&a[i]);
}
temp=0;
max=-999999;
begin=e=1;
f=1;
for(i=1;i<=m;i++)
{
temp+=a[i];
if(temp>max)
{
e=begin;
f=i;
max=temp;
}
if(temp<0)
{
begin=i+1;
temp=0;
}
}
printf("Case %d:\n",k++);
printf("%d %d %d\n",max,e,f);
if(n!=0)
printf("\n");
}
return 0;
}
本文档展示了两段代码,一段在编程竞赛中遇到错误并导致`WrongAnswer`,另一段则是修正后的正确代码。主要涉及数组处理、累加求和、区间最大值查找等问题。通过对比分析,帮助理解常见编程错误及其解决方案。

1071

被折叠的 条评论
为什么被折叠?



