描述:求连续数列的最大和,如果存在和相等的,那么选取所跨区间大的,如果所跨区间一样大,则选取开始位置小的,结果因为输出时缺少一个字母“T”,结果wa那么多次…… #include <cstdio> int num[20010]; int main() { // freopen("a.txt","r",stdin); int n,m,count,sum,flag=1; scanf("%d",&n); while(n--) { scanf("%d",&m); count=0; sum=-1; int left,len=0,right; for(int i=0; i<m-1; i++) { scanf("%d",&num[i]); count+=num[i]; if(count>sum) { sum=count; left=len+1; right=i+2; } else if(count==sum&&i+1-len>right-left) { right=i+2; left=len+1; } if(count<0) { count=0; len=i+1; } } if(sum<0) printf("Route %d has no nice parts\n",flag++); else printf("The nicest part of route %d is between stops %d and %d\n",flag++,left,right); } return 0; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)