HDU 1231 最大连续子序列
动态规划
#include <cstdio> #include <cstdlib> #include <cstring> #include <cctype> #include <cmath> #include <algorithm> #include <vector> #include <queue> #include <stack> #include <map> using namespace std; const int inf = 0x3f; const int INF = 0x3f3f3f3f; const int maxn = 105; int n, a[10005], b[10005]; int main() { while(scanf("%d", &n) && n) { for(int i = 0; i < n; i++) { scanf("%d", &a[i]); } b[0] = a[0]; int ans = a[0], s = 0, t = 0, e = 0; for(int i = 1; i < n; i++) { b[i] = max(a[i], a[i]+b[i-1]); if(b[i] == a[i]) { t = i; } //printf("i = %d, %d ", i, b[i]); if(b[i] > ans) { s = t; e = i; ans = b[i]; } } if(ans >= 0) printf("%d %d %d ", ans, a[s], a[e]); else printf("%d %d %d ", 0, a[0], a[n-1]); } return 0; }
动态规划 挺好的 教程