PAT甲级1007
#include<iostream>
using namespace std;
int main(){
int n;
int a[100000]={0};
int i,j,k,lg=0;
int min=-1;
int sum=0;
int start=0,end=0;
cin>>n;
for(i=0;i<n;i++){
cin>>a[i];
if(a[i]>=0){
lg=1;
}
}
if(lg==0){
min=0;
start=a[0];
end=a[n-1];
}else {
for(k=0;k<n;k++){
sum=0;
for(j=k;j<n;j++){
sum+=a[j];
if(sum>min){
min=sum;
start=a[k];
end=a[j];
}
}
}
}
cout<<min<<" "<<start<<" "<<end;
return 0;
}
输入数据 0 的判断!!!
答案不唯一时要注意题目要求选取哪一个,这个决定了采用哪种算法!!!
算法中注意:数组下标越界问题;算法简洁!!!