杭电ACM1003感觉自己测试数据都是对的,怎么还是wrong answer

2025-02-25 19:11:34
推荐回答(2个)
回答1:

代码明显错了 你的数据也太弱了吧 给你一组 1 2 1答案是4 1 3按照你的程序是2 2 2吧
我的代码你可以参考下,你程序下面应该判断sum小于0的情况
#include
using namespace std;
int main()
{
int cas,i;cin>>cas;
for(i=1;i<=cas;i++)
{
int n,j,sum=0,max=-1001,start=1,end=1,x,f=1;
cin>>n;
for(j=1;j<=n;j++)
{
cin>>x;
sum+=x;
// cout<<"start: "< if(sum>max)
{max=sum;start=f;end=j;}
if(sum<0)
{sum=0;f=j+1;}
//cout<<"f: "<
}
printf("Case %d:\n",i);
printf("%d %d %d\n",max,start,end);
if(i!=cas)
putchar('\n');

}
return 0;
}

回答2:

#include
using namespace std;
int main()
{
int t, num[100001], i, k, max, sum, start, end, n;
int tempstart;
cin >> t;
for (k = 1; k <= t; k++)
{
if (k != 1) {
cout << endl;
}
cin >> n;
for (i = 1; i <= n; i++)
{
cin >> num[i];
}
max = num[1];
start = 1;
tempstart = 1;
end = 1;
sum = 0;
for (i = 1; i <= n; i++)
{
if (sum >= 0)
sum = sum + num[i];
else {
sum = num[i];
tempstart = i;
}
if (sum>max)
{
max = sum;
start = tempstart;
end = i;
}
}
cout << "Case " << k << ':' << endl;
cout << max << ' ' << start << ' ' << end << endl;
}
return 0;
}