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

news/2024/7/5 18:29:30

实验思路:

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

实验代码:

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("\n");
       x = maxArrSum(arr);
       System.out.println("该二维数组最大子数组的和为\n"+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;
       }
}

实验截图:

 

转载于:https://www.cnblogs.com/jmdd/p/11062107.html


http://www.niftyadmin.cn/n/3484050.html

相关文章

eclispe 实用插件大全

在一个项目的完整的生命周期中&#xff0c;其维护费用&#xff0c;往往是其开发费用的数倍。因此项目的可维护性、可复用性是衡量一个项目好坏的关键。而注释则是可维护性中必不可少的一环。 注释模板导入步骤 安装方法&#xff1a;打开eclipse/myeclipse选择 window-->P…

Web 性能优化:21 种优化 CSS 和加快网站速度的方法

摘要&#xff1a; 优化CSS。 原文&#xff1a;Web 性能优化&#xff1a;21 种优化 CSS 和加快网站速度的方法作者&#xff1a;前端小智Fundebug经授权转载&#xff0c;版权归原作者所有。 这是 Web 性能优化的第 4 篇&#xff0c;上一篇在下面看点击查看&#xff1a; Web 性能优…

NutzBoot v2.3.1 发布,支持 nacos 配置中心和 ftp 客户端

开发四年只会写业务代码&#xff0c;分布式高并发都不会还做程序员&#xff1f; NutzBoot v2.3.1.v20190318 发布。NutzBoot 是以 Nutz 为核心的微服务解决方案&#xff0c;用小的开发成本快速搭建生产级微服务。 新版本支持 nacos 作为配置服务&#xff0c;添加了 ftp 客户端…

python并发模块之concurrent.futures(一)

Python3.2开始&#xff0c;标准库为我们提供了concurrent.futures模块&#xff0c;它提供了ThreadPoolExecutor和ProcessPoolExecutor两个类&#xff0c;实现了对threading和multiprocessing的进一步抽象&#xff0c;对编写线程池/进程池提供了直接的支持,他属于上层的封装&…

”不安全的服务器,不支持 FTP over TLS“ 配置 vsftpd 使用 SSL / TLS

为了解决暴露在公网的 FTP 传输的安全&#xff0c;我们必须对 vsftpd 进行配置 ssl 一、建立证书 1.检查 vsftpd 是否支持 ssl 模块 # ldd $(which vsftpd) | grep ssl 2.建立专门给vsftpd使用的凭证数据。CentOS有一个建立凭证的地方/etc/pki/tls/certs/ # cd /etc/pki/tls/ce…

大白话5分钟带你走进人工智能-第一节开篇介绍以及线性回归简介篇

一、前述 一直以来都想用很简介或者很普通的方式聊下各个算法的前龙后脉&#xff0c;让更多的人都能看懂算法的过程。查看了网上很多博客&#xff0c;不是写的太笼统就是抄来抄去&#xff0c;根本没有阅读的欲望&#xff0c;很是让人浪费时间&#xff0c;也学不到真正的东西&am…

ubuntu安装nimble

ubuntu安装nimble 简介&#xff1a;一款好用的rtmp、rtsp、cmaf流服务器 ubuntu安装步骤参考文档&#xff1a; https://wmspanel.com/nimble/install#os_ubuntu 修改API的端口参考文档&#xff1a; https://wmspanel.com/nimble/param#management_port 步骤一&#xff1a; 添…

Linux之解决命令行cat命令中文乱码

临时解决cat中文乱码 cat test.txt | iconv -f GBK -t UTF-8转载于:https://www.cnblogs.com/jums/p/10589960.html