连续查找累加,并连续记录最大值,当前值,如当前值为负数则弃掉数据,跳到之后继续查找 #include <stdio.h> #include <stdlib.h> int main() { int t,ti,n,ni,*num,maxnum=-200,tempsum=0,startp; scanf("%d",&t); for (ti=0;ti<t;ti++) { scanf("%d",&n); num=new int[n]; for (ni=0;ni<n;ni++) { scanf("%d",&num[ni]); if (num[ni]>maxnum) { maxnum=num[ni]; } } if (maxnum<0) { goto sfin; } for (ni=0;ni<n;ni++) { tempsum+=num[ni]; if (tempsum<0) { tempsum=0; continue; } if (tempsum>maxnum) { maxnum=tempsum; } } sfin: printf("%d/n",maxnum); delete num; maxnum=-200; startp=0; tempsum=0; } return 0; }