《算法竞赛-训练指南》第一章-1.24_pre二维矩阵中的最小连续矩阵和
来源:互联网 发布:幸运抽奖软件作弊 编辑:程序博客网 时间:2024/06/05 14:26
从一维数组拓展到二维矩阵这是个奇妙的过程……
二维矩阵的求法还是用一维数组的求法,就是任意枚举两行,然后求出这两行之间的同一列的元素的和,然后利用一维数组的求法,求出最大连续和,就是当前枚举的最大子矩阵和。
当然思想是好想,实现起来呢,也是好实现的,就是我受了题解上面的那个sum[x][y]的迷惑,一直都不知道怎么用,也想着怎么这利用上去,但是用来用去也没用成。总算用上了,发现时间效率和枚举的时候顺便求出和的效率差不多。
贴出代码:
#include <stdio.h>#include <string.h>#include <iostream>#include <string>using namespace std;const int MAXN = 10;const int INF = 1 << 30;int N;int M;int A[MAXN][MAXN];int S[MAXN][MAXN];int C[MAXN];int T[MAXN];int maxSum(int n, int *B){for (int i = 1; i <= n; i++){T[i] = B[i] - B[i - 1];}int ans = 0;int sum = T[1];for (int i = 2; i <= n; i++){if (sum > 0){sum += T[i];}else{sum = T[i];}if (ans < sum){ans = sum;}}return ans;}int main(){while (scanf("%d%d", &N, &M) != EOF){memset(S, 0, sizeof(S));for (int i = 1; i <= N; i++){for (int j = 1; j <= M; j++){scanf("%d", &A[i][j]);}}for (int i = 1; i <= N; i++){for (int j = 1; j <= M; j++){S[i][j] = S[i - 1][j] + S[i][j - 1] - S[i - 1][j - 1] + A[i][j];}}int sum = -INF;for (int i = 1; i <= N; i++){for (int j = i; j <= N; j++){C[0] = 0;for (int k = 1; k <= M; k++){C[k] = S[j][k] - S[i - 1][k];}int ans = maxSum(M, C);if (ans > sum){sum = ans;}}}/*for (int i = 1; i <= N; i++){memset(C, 0, sizeof(C));for (int j = i; j <= N; j++){C[0] = 0;for (int k = 1; k <= M; k++){C[k] += A[j][k];}int ans = maxSum(M, C);if (ans > sum){sum = ans;}}} //这种写法也是可以的相当于枚举列的时候顺便把sum也求了出来. */printf("%d\n", sum);}system("pause");return 0;}
- 《算法竞赛-训练指南》第一章-1.24_pre二维矩阵中的最小连续矩阵和
- 《算法竞赛-训练指南》第一章-1.24_pre-一维数组最大连续和
- 《算法竞赛-训练指南》第一章-1.24-pre_二维矩阵求最小子矩阵(O(n^3))
- 《算法竞赛-训练指南》第一章-1.24-UVa 10755
- 《算法竞赛-训练指南》第一章-1.21_LA2678
- 《算法竞赛入门经典——训练指南》第一章相关内容
- 《算法竞赛入门经典——训练指南》第一章相关内容
- 《算法竞赛-训练指南》第一章-1.4_LA 3708
- 《算法竞赛-训练指南》第一章-1.5_UVa 10881
- 《算法竞赛-训练指南》第一章-1.7——UVa 11464
- 《算法竞赛-训练指南》第一章-1.9——UVa11210
- 《算法竞赛-训练指南》-第一章-1.10_UVa 11384
- 《算法竞赛-训练指南》第一章-1.11——Uva 10795
- 《算法竞赛-训练指南》第一章-1.12_LA 3971
- 《算法竞赛-训练指南》第一章-1.13_LA 3635
- 《算法竞赛-训练指南》第一章-1.15_LA 3902
- 《算法竞赛-训练指南》第一章-1.16_LA 3177
- 《算法竞赛-训练指南》第一章-1.17_UVa 11462
- hdu4634 搜索+状态压缩
- cocos2d-x 消类游戏,类似Diamond dash 设计
- man info 命令
- NYOJ 吝啬的国度
- 公司版STM32工作原理
- 《算法竞赛-训练指南》第一章-1.24_pre二维矩阵中的最小连续矩阵和
- MFC学习之 重载OnEraseBkgnd()
- JavaSE基础之计算机语言概述
- Android 开发环境配置图文教程(jdk+eclipse+android sdk)
- Android地图开发之BingMap基础教程
- 2013渣打GitHub测试代码
- Git 使用教程
- PHP中获取当前页面的完整URL
- 最简单的下载分享github的方法 .