zoukankan      html  css  js  c++  java
  • 求二维数组的最大子数组和

    实验思路:

    通过键入二维数组的信息构建二维数组,求出数组所有二位子数组的和并求出最大值

    实验代码:

    package er_wei_shu_zu;
    
    import java.util.Scanner;
    
    public class rwsz {
        static Scanner scanner = new Scanner(System.in);
        public static void main(String args[]){
            int m,n;
            int x;
            Scanner scanner = new Scanner(System.in);
           System.out.println("二维数组的列数:");
           m = scanner.nextInt();
           System.out.println("二维数组的行数:");
         n = scanner.nextInt();
          int arr[][] = new int[n][m];
          System.out.println("请逐行输入二位数组:");
           for(int i = 0;i<n;i++)
           for(int j=0;j<m;j++)
           {
               arr[i][j] = scanner.nextInt();
           }
           System.out.println("
    ");
           x = maxArrSum(arr);
           System.out.println("该二维数组最大子数组的和为
    "+x);
       }
     
       //遍历所有二维数组的矩形区域
       
       static int  maxArrSum(int arr[][]){
           int m = arr.length;
           int n = arr[0].length;
           int p[][] = arrSum(arr);
           int ans = Integer.MIN_VALUE;
           for(int i=1; i<=m; i++){
               for(int j=1; j<=n; j++){
                   for(int endi=i; endi <=m; endi++){
                   for(int endj=j; endj<=n; endj++){    
                           int sum = p[endi][endj] - p[i-1][endj] - p[endi][j-1] + p[i-1][j-1];
                           if(ans < sum) ans = sum;    
                       }
                   }    
               }    
           }    
           return ans;    
       }
       
       public static int[][] arrSum(int arr[][]){
              int m = arr.length;
               int n = arr[0].length;
               int p[][] = new int[m+1][n+1];
               p[0][0] = arr[0][0];
               for(int i=0; i<=m; i++) p[i][0] = 0;
               for(int i=0; i<=n; i++) p[0][i] = 0;
               for(int i=1; i<=m; i++){
                   for(int j=1; j<=n; j++){
                       p[i][j] = p[i-1][j] + p[i][j-1] + arr[i-1][j-1] - p[i-1][j-1];
                   }
               }
               return p;
           }
    }

    实验截图:

  • 相关阅读:
    ios 设置本地化显示的app名称
    iOS 统一配置
    iPhoneX && iOS11 适配
    手机如何和电脑 无线连接 使用adb命令配合连接
    使用adb命令查看APP包名 和 包入口方法
    Charles下载及安装破解-自己编辑
    修改表里面里面的 所有账号的密码
    Xshell6会话管理器无意中关闭,在哪里打开
    工作中常用的Linux命令
    使用adb命令连接模拟器且安装apk
  • 原文地址:https://www.cnblogs.com/jmdd/p/11062107.html
Copyright © 2011-2022 走看看