uva10827 - Maximum sum on a torus(最大子矩阵和变形)

来源:互联网 发布:杭州淘宝服装摄影公司 编辑:程序博客网 时间:2024/06/04 00:21

题意:
是uva108求最大子矩阵和问题的变形,主要区别是该题为环形的

思路:
参考了他人做法:将矩阵扩大4倍来解决了环的问题。其余和uva108相似:http://blog.csdn.net/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;}
0 0
原创粉丝点击