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

来源:互联网 发布:牛股宝模拟炒股软件 编辑:程序博客网 时间:2024/05/01 20:36

题意:求一个矩阵环(循环矩阵)的最大子矩阵和。

题解: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[N][N], maxx, sum[N], sum2[N];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];elsesum2[q] = sum[q];if (sum2[q] > maxx)maxx = sum2[q];}printf("%d\n", maxx);}}


0 0
原创粉丝点击