hdu 1003 Max Sum
求最大子序列问题,有很多种方法,这里先实现一种,注意:
1、以负数开始的情况
#include<stdio.h> int T,N, i, j=1; int sum_temp, sum_max; int main() { int start, start_new, start_old, temp, end; scanf("%d",&T); while(T --) { scanf("%d",&N); start=0, end=0, start_new=0,sum_temp=0,sum_max=-100000000; for(i = 0; i < N; i ++) { scanf("%d", &temp); sum_temp += temp; if(sum_temp < 0) { start_old = start_new; start_new = i+1; } if(sum_temp > sum_max) { if(sum_temp > 0) start = start_new; else start = start_old; sum_max = sum_temp; end = i; } if(sum_temp < 0) { sum_temp =0; } } printf("Case %d:\n",j); printf("%d %d %d\n",sum_max, start+1, end+1); if(T>0) printf("\n"); j ++; } return 0; }