您的位置:首页 > 其它

uva 10827(循环矩阵最大连续子矩阵和)

2014-09-16 00:47 363 查看
题意:求一个矩阵环(循环矩阵)的最大子矩阵和。

题解:uva 108的加强版。。初做dp,围观大牛做法,因为是循环矩阵,所以将矩阵扩大一倍,由四个初始矩阵组成,然后开始在n*n的矩阵内选起始点,然后选择矩阵的长宽(都要小于n),计算过程中保存计算结果,dp基本思想。

#include <stdio.h>
#include <string.h>
const int N = 200;
const int INF = -0x3f3f3f3f;

int main() {
int t, n, s

, maxx, sum
, sum2
;
scanf("%d", &t);
while (t--) {
maxx = INF;
scanf("%d", &n);
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++) {
scanf("%d", &s[i][j]);
s[i + n][j] = s[i][j + n] = s[i + n][j + n] = s[i][j];
}
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
for (int p = 0; p < n; p++)
for (int q = 0; q < n; q++) {
sum[q] = s[q + i][p + j];
if (q)
sum[q] += sum[q - 1];
if (p)
sum2[q] += sum[q];
else
sum2[q] = sum[q];
if (sum2[q] > maxx)
maxx = sum2[q];
}
printf("%d\n", maxx);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  uva