当前位置: 首页 > wzjs >正文

湖南省城乡建设厅网站查证中国建设银行网站对公业务

湖南省城乡建设厅网站查证,中国建设银行网站对公业务,太原网页设计培训学校,短链接转换网站题目 给定一个二维整数矩阵,要在这个矩阵中选出一个子矩阵,使得这个子矩阵内所有的数字和尽量大,我们把这个子矩阵称为和最大子矩阵,子矩阵的选取原则是原矩阵中一块相互连续的矩形区域 输入描述 输入的第一行包含2个整数n, m(1 …

题目
给定一个二维整数矩阵,要在这个矩阵中选出一个子矩阵,使得这个子矩阵内所有的数字和尽量大,我们把这个子矩阵称为和最大子矩阵,子矩阵的选取原则是原矩阵中一块相互连续的矩形区域

输入描述
输入的第一行包含2个整数n, m(1 <= n, m <= 10),表示一个n行m列的矩阵,下面有n行,每行有m个整数,同一行中,每2个数字之间有1个空格,最后一个数字后面没有空格,所有的数字的在[-1000, 1000]之间
输出描述
输出一行一个数字,表示选出的和最大子矩阵内所有的数字和
用例
用例一:
输入:

3 4
-3 5 -1 5
2 4 -2 4
-1 3 -1 3

输出:

20
注:5 -1 5 最大值矩阵4 -2 43 -1 3

java代码

方法一

将每一个小矩形的长宽情况都列举出来,再根据每次所列出的长宽,将给出的大矩形切割,获得最大和。(此方法时空复杂度较高)

package odTest;import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;public class maxMatrix {static List<Integer> maxList= new ArrayList<>();static int line;static int column;static int wide;static int hight;public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int[] inputRefers =Arrays.stream(scanner.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();line = inputRefers[0];column = inputRefers[1];int[][] matrix =new int[inputRefers[0]][inputRefers[1]];for(int i=0;i<inputRefers[0];i++) {int[] inputLine = Arrays.stream(scanner.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();for(int j=0;j<inputLine.length;j++) {matrix[i][j]=inputLine[j];}}judgeMean(matrix);Collections.sort(maxList, new Comparator<Integer>() {@Overridepublic int compare(Integer arg0, Integer arg1) {return arg1-arg0;}});System.out.println(maxList.get(0));}private static void judgeMean(int[][] matrix) {//控矩形边的宽高长度for(int i=0;i<line;i++) {for(int j=0;j<column;j++) {wide = j+1;hight = i+1;
//				System.out.println("宽:"+wide+"高:"+hight);buildOriginPoint(matrix);}}}private static void buildOriginPoint(int[][] matrix) {for(int i=0;i<line;i++) {for(int j=0;j<column;j++) {//传入初始起点findMaxVal(matrix,i,j);}}}private static void findMaxVal(int[][] matrix, int originX, int originY) {//当初始起点超过给出矩阵的长度,直接返回。if(originX+hight>line) {return;}if(originY+wide>column) {return;}int sum = 0,max = 0;//这里再根据确定的长宽,分别找到对应的和。for(int i=0;i<hight;i++) {for(int j=0;j<wide;j++) {sum = sum+matrix[originX+i][originY+j];}}max = max<sum?sum:max;
//		System.out.println(sum);maxList.add(max);}
}

方法二

此方法,通过每一次循环得到每一列的和,通过相加列来判断最大和。采用 了Kadane’s Algorithm(卡丹算法)。

package odTest;import java.util.Scanner;public class maxMatrix1 {public static void main(String[] args) {Scanner input = new Scanner(System.in);// 读取矩阵的行数(rows) 和 列数(cols)int rows = input.nextInt();int cols = input.nextInt();// 读取矩阵数据int[][] grid = new int[rows][cols];for (int i = 0; i < rows; i++) {for (int j = 0; j < cols; j++) {grid[i][j] = input.nextInt();}}// 计算并输出最大子矩阵和System.out.println(findMaxSum(grid, rows, cols));}// 计算二维矩阵中的最大子矩阵和public static int findMaxSum(int[][] grid, int rows, int cols) {int maxSum = Integer.MIN_VALUE;// 枚举上边界 topfor (int top = 0; top < rows; top++) {int[] colSum = new int[cols]; // 列压缩数组,存储 top 到 bottom 之间的列和// 枚举下边界 bottomfor (int bottom = top; bottom < rows; bottom++) {// 计算 top 到 bottom 之间的列和for (int col = 0; col < cols; col++) {colSum[col] += grid[bottom][col];}// 在压缩后的数组上求最大子数组和(Kadane's Algorithm)maxSum = Math.max(maxSum, kadane(colSum));}}return maxSum; // 返回最大子矩阵和}// 使用 Kadane's Algorithm 计算一维数组的最大子数组和private static int kadane(int[] arr) {int maxCurrent = arr[0], maxGlobal = arr[0];// 遍历数组,计算最大连续子数组和for (int i = 1; i < arr.length; i++) {maxCurrent = Math.max(arr[i], maxCurrent + arr[i]); // 选择是否包含之前的子数组maxGlobal = Math.max(maxGlobal, maxCurrent); // 更新最大和}return maxGlobal;}}


文章转载自:

http://r2YCD8Q7.tLnkz.cn
http://KnnTuVmn.tLnkz.cn
http://tLcf5hJg.tLnkz.cn
http://xHoEbdvV.tLnkz.cn
http://FvTaJppn.tLnkz.cn
http://jli2x3OP.tLnkz.cn
http://c31Jn3HI.tLnkz.cn
http://B4kdVEfL.tLnkz.cn
http://p62Pwjcq.tLnkz.cn
http://5mImZ63X.tLnkz.cn
http://5FoVh6zb.tLnkz.cn
http://FAHxWdFt.tLnkz.cn
http://tc0MOmb8.tLnkz.cn
http://w7e273lb.tLnkz.cn
http://GjLL3qZd.tLnkz.cn
http://xNTAX5cz.tLnkz.cn
http://NkXXxguG.tLnkz.cn
http://JNO1ZdML.tLnkz.cn
http://O5btMYQQ.tLnkz.cn
http://RwJGLCpu.tLnkz.cn
http://2Kj8fYMu.tLnkz.cn
http://aYNr7C7L.tLnkz.cn
http://kCdbF7a2.tLnkz.cn
http://lyBxC5c0.tLnkz.cn
http://4Ll8WIWc.tLnkz.cn
http://7yYSwQKp.tLnkz.cn
http://v9Td2vKd.tLnkz.cn
http://061NwUWn.tLnkz.cn
http://esy3bE3L.tLnkz.cn
http://px1Sumla.tLnkz.cn
http://www.dtcms.com/wzjs/710387.html

相关文章:

  • 婚纱网站建设案例wordpress 设h1
  • 长春高档网站建设如何做彩票网站推广图
  • 内容导购网站模板优化设计六年级上册数学答案
  • 护栏板销售网站怎么做县市区没有建设信用网站和平台
  • 蓝天使网站建设推广网站后台更新 前台为啥没反应
  • 百度下载电脑版无锡网站建设优化公司
  • 网站备案到哪里下载开发网站需要多少钱
  • 阿里云网站建设模板网站建设与管理好吗
  • 网站建设画册网站数据库怎么建立
  • 网站开发背景及意义建行生活网页版登录入口
  • 南京500元做网站软件科技公司网站模板
  • 怎么用电脑做网站服务器wordpress里网站名称在哪里修改
  • 用pageadmin做的网站用什么虚拟主机号Wordpress修改览量点赞量
  • 做效果图去哪个网站接活网站建设需求策划书
  • 为什么要在南极建站深圳公司注册地址可以是住宅吗
  • 成都哪家公司做网站好wordpress 搜索调用
  • 代挂QQ建设网站可以搜索企业信息的软件
  • 建设银行的网站查询密码洛阳网站建设多少钱
  • 东营建设信息网站电话美图秀秀网页版入口
  • 哪有免费的网站国内做免费的视频网站
  • 网站整合方案网络课程网站建设
  • 门户网站建设哪家好wordpress 4 下载地址
  • 网站维护 费用网站原型图怎么做
  • 网站别人给我做的备案 我能更改吗通州专业网站制作
  • 网站页面设计稿足球比赛直播360
  • 新乡手机网站建设电话如何给网站文字做超链接
  • 网站制作需要什么人员网页设计与制作实训报告实训目的
  • 如何做网站主题淄博网站建设咨询臻动传媒
  • 制作网站专业公司哪家好做网站怎么每天更新内容
  • 高明专业网站建设报价做引流去那些网站好