第四章——求最大子矩阵累加和
来源:互联网 发布:海洛因在淘宝的名称 编辑:程序博客网 时间:2024/05/17 07:46
思路:
遍历以每一行开始,其他行结束的子矩阵最大和。而该子矩阵的最大和就是子矩阵每行元素相加得到的数组的最大子数组之和。
时间复杂度O(m*m*n);m为行数,n为列数;如果行数比列数大的话,就把数组按列的方法进行操作,时间复杂度就是O(m*n*n);
public class Problem_01_SubMatrixMaxSum {public static int maxSum(int[][] m) {if (m == null || m.length == 0 || m[0].length == 0) {return 0;}int max = Integer.MIN_VALUE;int cur = 0;int[] s = null; // 累加数组for (int i = 0; i != m.length; i++) { //以第i行开始s = new int[m[0].length];for (int j = i; j != m.length; j++) { //包含i~j行的子矩阵cur = 0;for (int k = 0; k != s.length; k++) { //用于遍历所有的列s[k] += m[j][k]; //子矩阵得到的累加数组cur += s[k]; //累加数组的当前累加和max = Math.max(max, cur); //记录累加数组的最大子数组累加和cur = cur < 0 ? 0 : cur;}}}return max;}public static void main(String[] args) {int[][] matrix = { { -90, 48, 78 }, { 64, -40, 64 }, { -81, -7, 66 } };System.out.println(maxSum(matrix));}}
阅读全文
0 0
- 第四章——求最大子矩阵累加和
- 求累加和小于等于k的最大子矩阵
- 子矩阵的最大累加和问题
- 子矩阵的最大累加和
- python---子矩阵的最大累加和
- 经典算法——子矩阵的最大累加和问题
- 数组与矩阵---子矩阵的最大累加和问题
- 【算法】子数组的最大累加和/子矩阵的最大累加和问题
- 求最大和子矩阵
- 求最大子矩阵和
- 有关子矩阵最大累加和的总结
- 求二维矩阵最大子矩阵和
- 【2008】 求数列最大累加和的子序列
- 求两个子数组最大的累加和
- 求两个子数组最大的累加和
- 求子矩阵元素最大和
- PKU1050_求最大子矩阵和值
- HDU1081 && POJ1050(求最大子矩阵和)
- 我用到的sublime text 3 的插件(前端专属)
- 【技术问题】用SVN在两台PC之间实现文件同步
- 2017 Multi-University Training Contest 3 solutions 1008 RXD and math
- Android点击EditText文本框之外任何地方隐藏键盘的解决办法
- Python File(文件) 方法
- 第四章——求最大子矩阵累加和
- xml文件中处理大于号小于号的方法
- poj 3335 3130 1279 判断是否有核
- $.ajax()方法详解
- ansible之ad-hoc commands
- oracleday10(对java代码重构)
- vue项目中,使用axios跨域处理
- Python 异常处理
- Python学习(正则表达式与模式匹配下篇)