很水的题,另外我感觉我的算法不算是动态规划。。。因为我根本没看出来子问题是什么,但是做出来了
#include <stdio.h>
int main() { int max_start; int max_end; int now_start; int now_end; int max; int now_max; int now; int start; int i, n; while(1) { scanf("%d", &n); if(n == 0) break; max_start = -1; max_end = -1; now_start = -1; now_end = -1; now_max = -1; max = -1; for(i = 0; i < n; i++) { scanf("%d", &now); if(i == 0) start = now; if(now_max < 0) { if(now >= 0) { now_start = now; now_end = now; now_max = now; if(now_max > max) { max_start = now_start; max_end = now_end; max = now_max; } } } else { now_max += now; now_end = now; if(now_max > max) { max_start = now_start; max_end = now_end; max = now_max; } } } if(max >= 0) { printf("%d %d %d\n", max, max_start, max_end); } else { printf("%d %d %d\n", 0, start, now); } } return 0; }