动态规划复习-HDU1081

  1. 注意多个测试用例,和poj不一样
  2. 注意输出用例结果之间要换行
代码如下:
#include 

int rect[101][101];
int a[101], dp[101];
int n, mx;
int main() {
	while (scanf("%d", &n) != EOF) {
		for (int i = 1; i <= n; ++i)
				for (int j = 1; j <= n; ++j)
					scanf("%d", &rect[i][j]);
			mx = -200000000;
			for (int i = 1; i <= n; ++i)
				for (int j = i; j <= n; ++j) {
					for (int k = 1; k <= n; ++k) {
						a[k] = 0;
						for (int m = i; m <= j; ++m) {
							a[k] += rect[m][k];
						}
					}
					dp[0] = 0;
					for (int k = 1; k <= n; ++k) {
						if (a[k] > dp[k - 1] + a[k])
							dp[k] = a[k];
						else
							dp[k] = dp[k - 1] + a[k];
						if (dp[k] > mx)
							mx = dp[k];
					}
				}
			printf("%d\n", mx);
	}
	return 0;
}


 

posted on 2012-02-08 13:51  sing1ee  阅读(97)  评论(0)    收藏  举报