类型:枚举
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4223
思路:n = 1000,直接枚举所有的区间[i, j]的值,比较得最优值
//hdoj 4223 Dynamic Programming?
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstdio>
using namespace std;
#define FOR(i,a,b) for(i = (a); i < (b); ++i)
#define FORE(i,a,b) for(i = (a); i <= (b); ++i)
#define FORD(i,a,b) for(i = (a); i > (b); --i)
#define FORDE(i,a,b) for(i = (a); i >= (b); --i)
#define max(a,b) ((a) > (b)) ? (a) : (b)
#define min(a,b) ((a) < (b)) ? (a) : (b)
#define CLR(a,b) memset(a,b,sizeof(a))
#define PB(x) push_back(x)
const int MAXN = 1110;
const int MAXM = 100110;
const int hash_size = 25000002;
const int INF = 10000000;
int sum[MAXN], da[MAXN], s[MAXN][MAXN];
int main() {
int cas = 1, i, j, t, n;
scanf("%d", &t);
while(t--) {
CLR(sum, 0);
scanf("%d", &n);
FORE(i, 1, n) {
scanf("%d", &da[i]);
sum[i] = sum[i - 1] + da[i];
}
FORE(i, 1, n) {
FORE(j, i, n) {
s[i][j] = sum[j] - sum[i - 1];
}
}
int tmp = INF, tmp_sum = 0, endd = INF;
FORE(i, 1, n) {
FORE(j, i, n) {
tmp = abs(s[i][j]);
if(tmp < endd)
endd = tmp;
}
}
printf("Case %d: %d\n", cas++, endd);
}
return 0;
}