题目大意:
一段公交车路,各个车站为1,2,3…s, 各个车站之间的景色值是不同的, 求一段连续的车站的景色值之和最大是多少。
思路:
http://blog.youkuaiyun.com/hcbbt/article/details/10454947
代码:
#include <iostream>
using namespace std;
#include <stdio.h>
#include <cstring>
int ss;
int main() {
int n,s;
int sum,Max;
int T = 0,l,r,bg,ed;
scanf("%d",&n);
while(n--) {
T++;
scanf("%d",&s);
l = r =bg =ed = 1;
sum = -0x3f3f3f3f;
Max = - 0x3f3f3f3f;
for(int i = 1; i < s; i++) {
scanf("%d",&ss);
if(sum + ss < ss) {
sum = ss;
l = i ;
}
else
sum = sum +ss;
if(sum > Max || (sum == Max && i - l > ed - bg)) {
Max = sum;
bg = l;
ed = i;
}
}
if(Max <= 0 )
printf("Route %d has no nice parts\n",T);
else
printf("The nicest part of route %d is between stops %d and %d\n",T,bg,ed+1);
}
return 0;
}