感想:這道題的輸出格式很容易出現錯誤,最後一組數據輸出後不輸出回車也會PE。
細節上出現了一點小問題,導致一種情況會出現錯誤(比如所有數都是相同的負數時)。
代碼最起碼在邏輯上一定要足夠完美。如果出現了WA,就想想還有那種情況出現在了考慮之外,多想幾種樣例來試一下。
代碼:
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
int a[2000001];
int cmax[2000001];
int tag[2000001];
int main()
{
// freopen("1.txt","r",stdin);
int n,p=1;
cin>>n;
while(n--)
{
int num,tmax,ttag;
scanf("%d",&num);
for(int i=0;i<num;++i){
scanf("%d",&a[i]);
if(i==0){
cmax[0]=a[0];
tag[0]=0;
tmax=a[0];
ttag=0;
}
else{
if(cmax[i-1]>=0){
cmax[i]=a[i]+cmax[i-1];
tag[i]=tag[i-1];
}
else{
cmax[i]=a[i];
tag[i]=i;
}
if(cmax[i]>tmax){
tmax=cmax[i];
ttag=i;
}
}
}
printf("Case %d:\n",p++);
printf("%d %d %d",tmax,tag[ttag]+1,ttag+1);
if(n!=0)
printf("\n\n");
else
printf("\n");
}
}