#include<iostream> using namespace std; int main() { int num; cin>>num; int a[num]; for(int i=0;i<num;i++) { cin>>a[i]; } int maxsum=0; int temp=0; int i; int begin,end; int detect=a[0]; for(i=0;i<num;i++) { temp+=a[i]; if(temp<0) { temp=0; detect=a[i+1]; //printf("%d",detect); } else { if(temp>maxsum) { maxsum=temp; end=a[i]; begin =detect; //10printf("%d\n",begin); } } //temp+=a[i]; } int flag=0; for(i=0;i<num;i++) { if(a[i]==0) { flag=1; break; } } //printf("%d\n",flag); if(maxsum>0) printf("%d %d %d",maxsum,begin,end); else if(maxsum==0&&flag) { printf("%d %d %d",0,0,0); } else printf("%d %d %d",0,a[0],a[num-1]); return 0; }
认真学数据结构算法了,想着以c为基础的好多读明白代码就可以了,不一定非要用c这么复杂来写,考研的时候再说,现在就先用STL写。
PTA对程序的严谨性还是高啊。最后0和负数混杂和单纯负数都得分类。