uva 108(最大连续矩阵和)
2014-09-15 23:34
387 查看
题意:给一个n×n的矩阵,求这个矩阵的子矩阵和最大的值。
题解:暴力枚举O(n^6)超时后,看网上是将矩阵中矩阵左上角到各个位置的和都先求出来保存,避免重复计算,果断用了。
题解:暴力枚举O(n^6)超时后,看网上是将矩阵中矩阵左上角到各个位置的和都先求出来保存,避免重复计算,果断用了。
#include <stdio.h> #include <string.h> #include <algorithm> using namespace std; const int N = 105; const int INF = -0x3f3f3f3f; int main() { int n, s , sum , x, y, maxx; while (scanf("%d", &n) != EOF) { maxx = INF; for (int i = 1; i <= n; i++) for (int j = 1; j <= n; j++) scanf("%d", &s[i][j]); for (int i = 0; i < n; i++) sum[i][0] = sum[0][i] = 0; for (int i = 1; i <= n; i++) for (int j = 1; j <= n; j++) sum[i][j] = sum[i][j - 1] + sum[i - 1][j] - sum[i - 1][j - 1] + s[i][j];//减掉重复的 for (int i = 1; i <= n; i++) for (int j = i; j <= n; j++) for (int p = 1; p <= n; p++) for (int q = p; q <= n; q++) { int temp = sum[j][q] - sum[j][p - 1] - sum[i - 1][q] + sum[i - 1][p - 1];//加上多减的 if (temp > maxx) maxx = temp; } printf("%d\n", maxx); } return 0; }
相关文章推荐
- UVA - 108 Maximum Sum(子矩阵最大和)
- uva108 Maximum sum(矩阵最大和)
- UVA 108 Maximum Sum(子矩阵最大和)
- UVA108 - Maximum Sum(最大连续和)
- URAL_1146/uva_108 最大子矩阵 DP 降维
- UVA - 108 Maximum Sum 求子矩阵的最大和
- [ZJOI2007]棋盘制作 解题报告(最大连续同色子矩阵)
- UVa 108 - Maximum Sum(最大连续子序列)
- UVa 108 Maximum Sum (贪心&最大子矩阵和)
- UVA11082 矩阵展开,最大流
- 最大连续子串&子矩阵
- uva 10827 - Maximum sum on a torus(连续最大和问题)
- UVa 1400 "Ray, Pass me the dishes!"(区间最大连续数组和)
- uva11082 知道矩阵每行每列数字之和 求矩阵每一个元素 最大流
- uva108 - Maximum Sum(最大和)
- Magical GCD UVA 1642 利用约数个数少来优化 给定n个数,求使连续的一段序列的所有数的最大公约数*数的数量的值最大。输出这个最大值。
- UVA - 1400(区间连续最大和)
- uva1330 在一个大的矩阵中寻找面积最大的子矩阵
- UVA-10755 Garbage Heap 三维子矩阵最大和
- UVA 10074 Take the Land(最大子矩阵和变形)