#include <iostream>
using namespace std;
void maxsum(int p[],int numb){
int i,j,front,back;
int ThisSum,MaxSum1;
ThisSum=MaxSum1=0;
for(i=0,j=p[i];i<numb;i++){
ThisSum+=p[i];
if(ThisSum>MaxSum1){
MaxSum1=ThisSum;
front=j;
back=p[i];
}else if(ThisSum<0){
ThisSum=0;
j=p[i+1];
}
}
cout<<MaxSum1<<" "<<front<<" "<<back;
}
int main(){
int num;
cin>>num;
int *p=new int[num];
int number=num;
while(num){
cin>>p[num-1];
num--;
}
maxsum(p,number);
delete p;
return 0;
}
10
-10 1 2 3 4 -5 -23 3 7 -21输入
预期结果10 1 4
代码实际结果10 7 3
这样记录前后两端数字有什么问题