zoukankan      html  css  js  c++  java
  • 个人作业3

       二维数组求最大子矩阵的和

    简单分析 ; 二维数组 是一维数组的 扩充 

    先遍历一维数组的 子数组 

    在将 下一行与上一行相加 变成 n-1行 仍然是遍历一维数组 以此类推。但是时间复杂度比较大

    代码

    package main;
     
    import java.util.Scanner;
     
    
    public class SumOfSubMatrix {
        public static void main(String[] args) {
            // TODO Auto-generated method stub
    //        int arr[][]={{1,2,-3},{3,4,-5},{-5,-6,-7}};        
            Scanner sc= new Scanner(System.in);        
            while(sc.hasNext())
            {
                int n= sc.nextInt();
                int arr[][]=new int [n][n];
                for(int i=0;i<n;i++)
                {
                    for(int j=0;j<n;j++)
                    {
                        arr[i][j]=sc.nextInt();
                    }
                }            
                System.out.println(sumOfSubMatrix(arr,n));
            }
        }
     
        public static int sumOfSubMatrix(int a[][],int n)
        {
            int max=Integer.MIN_VALUE;        
            
            //res保存的是从 i 行 到第 j 行 所对应的矩阵上下值的和 
            for(int i=0;i<n;i++)
            {
                int res[]=new int[n];
                for(int j=i;j<n;j++)
                {                
                    for(int k=0;k<n;k++)
                    {
                        res[k]+=a[j][k];
                    }
                    int maxNum=sumOfSubArray(res);
                    if(maxNum>max)
                        max=maxNum;
                }
            }
            return max;        
        }
        
        public static int sumOfSubArray(int arr[])
        {
            if(arr.length==0||arr==null)
                return 0;
            int max=Integer.MIN_VALUE;
            int cur=0;
            for(int i=0;i<arr.length;i++)
            {
                cur+=arr[i];
                max=Math.max(max, cur);
                cur=cur<0?0:cur;
            }
            return max;        
        }
    }

  • 相关阅读:
    直接插入排序
    归并排序
    正则问题
    九宫重排
    java合并两个集合并通过stream流构建响应结果
    企业微信扫码登录
    docker安装es
    docker安装nacos随记
    解决docker安装mysql8.0无法远程连接问题
    java分析工具10:jvm测试与调优
  • 原文地址:https://www.cnblogs.com/1983185414xpl/p/10603187.html
Copyright © 2011-2022 走看看