题意:
是uva108求最大子矩阵和问题的变形,主要区别是该题为环形的
思路:
参考了他人做法:将矩阵扩大4倍来解决了环的问题。其余和uva108相似:http://blog.youkuaiyun.com/conatic/article/details/50839179
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 160;
int n, a[N][N], b[N];
int main() {
int cas;
scanf("%d", &cas);
while (cas--) {
scanf("%d", &n);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &a[i][j]);
a[i][j + n] = a[i + n][j] = a[i + n][j + n] = a[i][j];
}
}
int maxn = -1;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
memset(b, 0, sizeof(b));
for (int k = i; k < n + i; k++) {
int sum=0;
for (int l = j; l < n + j; l++) {
b[l] += a[k][l];
sum += b[l];
maxn=max(sum,maxn);
}
}
}
}
printf("%d\n",maxn );
}
return 0;
}