hdoj 4223 Dynamic Programming?

来源:互联网 发布:东方红资产管理 知乎 编辑:程序博客网 时间:2024/06/08 13:40

类型:枚举

题目: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;}



原创粉丝点击