博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
和最大连续子串续——和最大连续子矩阵
阅读量:5341 次
发布时间:2019-06-15

本文共 1985 字,大约阅读时间需要 6 分钟。

继上一节学习了和最大连续子串,推广到和最大连续子矩阵,以二维为例,子矩阵是矩阵行和列的组合,参考:

代码如下:

package programming;/**最大和的连续子矩阵 * 将连续子矩阵看做是一维连续子串,然后利用和最大连续子串方法,求出连续子串,进而求出子矩阵 * @author ywf * */public class MaxSumSubMatrix {    /**     * @param args     */    public static void main(String[] args) {        int[][] A =  {
{0, -2, -7, 0}, {
9 , 2 , -6, 2}, {
-4 , 1 ,-4 , 1}, {
-1 , 8 , 0 ,-2}}; int[] temp = new int[A[0].length]; int subMaxSum = Integer.MIN_VALUE; int colStart = -1; int colEnd = -1; int rowStart = -1; int rowEnd = -1; //矩阵压缩 for(int i = 0 ;i
subMaxSum){ subMaxSum = tempMax[2]; colStart = tempMax[0]; colEnd = tempMax[1]; rowStart = i; rowEnd = j; } temp = new int[A[0].length]; } } //输出和最大子矩阵 for(int i = rowStart;i<=rowEnd;i++){ for(int j = colStart;j<=colEnd;j++){ System.out.print(A[i][j]+" "); } System.out.println(); } System.out.println("sum:"+subMaxSum); } public static int[] getResult4(int[] array) { int[] result = new int[3]; int rmax = Integer.MIN_VALUE;//当前最大的和 int sum = Integer.MIN_VALUE;//当前的和 int start = -1;//最大子串的起始下标 int end = -1;//最大子串的结束下标 for (int i = 0; i < array.length; i++) { if (sum > 0) { sum += array[i]; } else { sum = array[i]; if(sum>rmax){ start = i; } } if (sum > rmax) { rmax = sum; end = i; } } result[0] = start; result[1] =end ; result[2] = rmax; return result; }}

   提取码 d68b

转载于:https://www.cnblogs.com/yuwenfeng/p/4121671.html

你可能感兴趣的文章
一个简单的插件式后台任务管理程序
查看>>
GDB调试多进程程序
查看>>
组合数
查看>>
第二章作业心得
查看>>
CMD批处理延时启动的几个方法
查看>>
转:LoadRunner中web_custom_request 和 web_submit_data的差别
查看>>
HTC G7直刷MIUI开启A2SD+亲测教程
查看>>
shiro的rememberMe不生效
查看>>
const 不兼容的类型限定符问题
查看>>
OpenCV的配置
查看>>
spring Cache + Redis 开发数据字典以及自定义标签
查看>>
成功连上数据库顿感世界美好许多
查看>>
编程注意2
查看>>
《C++ Primer Plus》第12章 类和动态内存分配 学习笔记
查看>>
kosaraju求强连通分量
查看>>
Block作为返回值时的使用
查看>>
文件管理之文件后缀名识别
查看>>
android 表情,软键盘冲突解决方案(仿微博等SNS应用)
查看>>
ASP.NET MVC随想录——锋利的KATANA
查看>>
20155303 2016-2017-2 《Java程序设计》第五周学习总结
查看>>