最大子矩阵

c++之最大子矩阵的和 最大子矩阵的和 ***定义:***就是不限定子矩阵的行和列,只要求和最大。 例如a[3][3]= 1 2 3 0 7 -1 1 -2 0 的max=a[0][0]+a[0][1]+a[0][2]+a[1][0]+a[1][1]+a[1][2]=12; ***基本思路:***假设最大子矩阵的行数为i,(i从1到n),分别求出1-i,2-(i+1),3-(i+2),…(n-i+1)-(n)行... 阅读详情

发布一个k8s部署视频:https://edu.youkuaiyun.com/course/detail/26967

课程内容:各种k8s部署方式。包括minikube部署,kubeadm部署,kubeasz部署,rancher部署,k3s部署。包括开发测试环境部署k8s,和生产环境部署k8s。

腾讯课堂连接地址https://ke.qq.com/course/478827?taid=4373109931462251&tuin=ba64518

第二个视频发布  https://edu.youkuaiyun.com/course/detail/27109

腾讯课堂连接地址https://ke.qq.com/course/484107?tuin=ba64518

介绍主要的k8s资源的使用配置和命令。包括configmap,pod,service,replicaset,namespace,deployment,daemonset,ingress,pv,pvc,sc,role,rolebinding,clusterrole,clusterrolebinding,secret,serviceaccount,statefulset,job,cronjob,podDisruptionbudget,podSecurityPolicy,networkPolicy,resourceQuota,limitrange,endpoint,event,conponentstatus,node,apiservice,controllerRevision等。

第三个视频发布:https://edu.youkuaiyun.com/course/detail/27574

详细介绍helm命令,学习helm chart语法,编写helm chart。深入分析各项目源码,学习编写helm插件
————————————————------------------------------------------------------------------------------------------------------------------

 

package com.microsoft;

public class MatrixUtil {
	public static long returnSumOfMaxSubMatrix(int[][] matrix) throws Exception {
		int [][]index=new int[4][2];
		index[0]=new int[]{0,0};
		index[1]=new int[]{0,matrix[0].length-1};
		index[2]=new int[]{matrix.length-1,0};
		index[3]=new int[]{matrix.length-1,matrix[0].length-1};
		
		
		return recuisiveMaxSubMatrix(index,matrix);
	}
	
	private static long recuisiveMaxSubMatrix(int[][] index,int[][] matrix){
		if(index[0][0]==index[3][0]&&index[0][1]==index[3][1]){
			return matrix[index[0][0]][index[0][1]];
		}
		int [][]topLeft=new int[4][2];
		topLeft[0]=index[0];
		topLeft[1]=new int[]{index[0][0],(index[0][1]+index[1][1])/2};
		topLeft[2]=new int[]{(index[0][0]+index[2][0])/2,index[0][1]};
		topLeft[3]=new int[]{(index[0][0]+index[2][0])/2,(index[0][1]+index[1][1])/2};
		int [][]topRight=new int[4][2];
		topRight[0]=new int[]{index[0][0],(index[0][1]+index[1][1])/2+1};
		topRight[1]=new int[]{index[1][0],index[1][1]};
		topRight[2]=new int[]{(index[0][0]+index[2][0])/2,(index[0][1]+index[1][1])/2+1};
		topRight[3]=new int[]{(index[0][0]+index[2][0])/2,index[1][1]};
		int [][]bottomLeft=new int[4][2];
		bottomLeft[0]=new int[]{(index[0][0]+index[2][0])/2+1,index[0][1]};
		bottomLeft[1]=new int[]{(index[0][0]+index[2][0])/2+1,(index[0][1]+index[1][1])/2};
		bottomLeft[2]=index[2];
		bottomLeft[3]=new int[]{index[2][0],(index[2][1]+index[3][1])/2};
		int [][]bottomRight=new int[4][2];
		bottomRight[0]=new int[]{(index[0][0]+index[2][0])/2+1,(index[0][1]+index[1][1])/2+1};
		bottomRight[1]=new int[]{(index[0][0]+index[2][0])/2+1,index[1][1]};
		bottomRight[2]=new int[]{index[2][0],(index[2][1]+index[3][1])/2+1};
		bottomRight[3]=index[3];
		long max1=recuisiveMaxSubMatrix(topLeft,matrix);
		long max2=recuisiveMaxSubMatrix(topRight,matrix);
		long max3=recuisiveMaxSubMatrix(bottomLeft,matrix);
		long max4=recuisiveMaxSubMatrix(bottomRight,matrix);
		long maxTop=Integer.MIN_VALUE;
		long max=0;
	
		for(int x1=topLeft[0][0];x1<=topLeft[2][0];x1++){
			for(int x2=x1;x2<=topLeft[2][0];x2++){
				for(int y1=topLeft[0][1];y1<=topLeft[1][1];y1++){
					for(int y2=topRight[0][1];y2<=topRight[1][1];y2++){
						max=0;
						for(int i=x1;i<=x2;i++){
							for(int j=y1;j<=y2;j++){
								max+=matrix[i][j];
							}
						}
						maxTop=Math.max(maxTop, max);
					}
				}
			}
		}
		
		long maxLeft=Long.MIN_VALUE;
		max=0;
		for(int x1=topLeft[0][0];x1<=topLeft[2][0];x1++){
			for(int x2=bottomLeft[0][0];x2<=bottomLeft[2][0];x2++){
				for(int y1=topLeft[0][1];y1<=topLeft[1][1];y1++){
					for(int y2=y1;y2<=topLeft[1][1];y2++){
						max=0;
						for(int i=x1;i<=x2;i++){
							for(int j=y1;j<=y2;j++){
								max+=matrix[i][j];
							}
						}
						maxLeft=Math.max(maxLeft, max);
					}
				}
			}
		}
		long maxBottom=Long.MIN_VALUE;
		max=0;
		for(int x1=bottomLeft[0][0];x1<=bottomLeft[2][0];x1++){
			for(int x2=x1;x2<=bottomLeft[2][0];x2++){
				for(int y1=bottomLeft[0][1];y1<=bottomLeft[1][1];y1++){
					for(int y2=bottomRight[0][1];y2<=bottomRight[1][1];y2++){
						max=0;
						for(int i=x1;i<=x2;i++){
							for(int j=y1;j<=y2;j++){
								max+=matrix[i][j];
							}
						}
						maxBottom=Math.max(maxBottom, max);
					}
				}
			}
		}
		
		long maxRight=Long.MIN_VALUE;
		max=0;
		for(int x1=topRight[0][0];x1<=topRight[2][0];x1++){
			for(int x2=bottomRight[0][0];x2<=bottomRight[2][0];x2++){
				for(int y1=bottomRight[0][1];y1<=bottomRight[1][1];y1++){
					for(int y2=y1;y2<=bottomRight[1][1];y2++){
						max=0;
						for(int i=x1;i<=x2;i++){
							for(int j=y1;j<=y2;j++){
								max+=matrix[i][j];
							}
						}
						maxRight=Math.max(maxRight, max);
					}
				}
			}
		}
		
		long maxFull=Long.MIN_VALUE;
		max=0;
		for(int x1=topLeft[0][0];x1<=topLeft[2][0];x1++){
			for(int x2=bottomLeft[0][0];x2<=bottomLeft[2][0];x2++){
				for(int y1=bottomLeft[0][1];y1<=bottomLeft[1][1];y1++){
					for(int y2=bottomRight[0][1];y2<=bottomRight[1][1];y2++){
						max=0;
						for(int i=x1;i<=x2;i++){
							for(int j=y1;j<=y2;j++){
								max+=matrix[i][j];
							}
						}
						maxFull=Math.max(maxFull, max);
					}
				}
			}
		}
		
		long result=Math.max(max1, max2);
		result=Math.max(result, max3);
		result=Math.max(result, max4);
		result=Math.max(result, maxTop);
		result=Math.max(result, maxLeft);
		result=Math.max(result, maxBottom);
		result=Math.max(result, maxRight);
		result=Math.max(result, maxFull);
		return result;
		
	}

	public static void main(String[] args) throws Exception {
		int[][] matrix = { { 9, -3, 7, -5 }, { -3, -4, 2, 0 }, { 7, 2, 2, -1 },
				{ -5, 0, -1, 6 } };
		long max = returnSumOfMaxSubMatrix(matrix);
		System.out.println("Max = " + max);
	}
}

 

最大子矩阵和问题归纳总结 一,最大子矩阵问题: 给定一个n*n(0< n <=100)的矩阵,请找到此矩阵的一个子矩阵,并且此子矩阵的各个元素的和最大,输出这个最大的值。 Example: 0 -2 -7 0 9 2 -6 2 -4 1 -4 1 -1 8 0 -2 其中左上角的子矩阵: 9 2 -4 1 -1 8 此子矩阵的值为9+2+(-4)+1+(- 阅读详情

相关推荐

WIN10环境下STK11.5(含Analyzer, EOIR, Scheduler插件)的安装与破解全攻略

本文提供了一份详细的WIN10环境下STK11.5软件及其核心插件(Analyzer, EOIR, Scheduler)的安装与破解全攻略。内容涵盖从安装包准备、系统环境检查,到基础版安装、插件部署、破解文件替换及许可证配置的完整步骤,并附有常见问题排错指南,旨在帮助用户免费搭建功能齐全的卫星仿真分析环境。

solidity8miner的博客 758

最大子矩阵和(详解)

转载自:http://blog.youkuaiyun.com/beiyeqingteng 前言: 今天花了很长时间,看了无数人写的帖子,但是几乎没有人把这个问题一下子说得很清楚,所以,我把这个问题按照自己的思路写出来,希望能够把这个问题讲清楚。 问题: 求一个M*N的矩阵的最大子矩阵和。 比如在如下这个矩阵中: 0 -2 -7 0 9 2 -6 2 -4 1 -4 1 -1

KeepTing 5万+

别再为数码管引脚发愁了!用STM32的普通IO口驱动TM1650数码管模块(附完整模拟I2C代码)

本文详细介绍了如何利用STM32的普通IO口通过模拟I2C协议驱动TM1650数码管模块,提供了完整的硬件连接方案和软件实现代码。通过模拟I2C技术,开发者可以灵活使用任意GPIO引脚控制多位数码管显示,解决了传统驱动方式占用大量IO资源的问题。文章包含TM1650寄存器解析、亮度控制等实用功能实现,并分享了常见问题排查与性能优化技巧。

weixin_30764771的博客 659

最大子矩阵和

前言: 今天花了很长时间,看了无数人写的帖子,但是几乎没有人把这个问题一下子说得很清楚,所以,我把这个问题按照自己的思路写出来,希望能够把这个问题讲清楚。 问题: 求一个M*N的矩阵的最大子矩阵和。 比如在如下这个矩阵中:  0 -2 -7  0  9  2 -6  2 -4  1 -4  1 -1  8  0 -2  拥有最大和的子矩阵为:  9 2 -4 1 -1 8

Yuwen's Hero 3万+

Depth Anything 3实战:如何用DINOv2 Transformer一键生成3D高斯点云?

本文详细介绍了Depth Anything 3(DA3)模型如何利用DINOv2 Transformer架构,实现从单张或多视角图像一键生成高质量3D高斯点云。DA3通过统一的深度-射线表示和自适应注意力机制,简化了传统复杂的3D重建流程,并可直接微调用于3D高斯渲染,为图形学、CV和内容创作领域提供了高效的端到端解决方案。

postgres8guard的博客 723

实测有效!易灵思FPGA工程如何正确配置Efinity+Modelsim仿真环境

本文详细介绍了易灵思FPGA工程中如何高效配置Efinity与Modelsim联合仿真环境,包括软件版本匹配、系统环境变量设置、工程文件结构优化及仿真脚本深度优化等实战经验。通过实测数据验证,该方案可显著提升仿真效率,适用于不同规模的设计验证,帮助工程师快速搭建稳定高效的联仿环境。

m2n3b4v5c6的博客 405

最大子矩阵题解

这是最大子矩阵的题解,解法一使用枚举,70分,解法二使用前缀和,满分

bt1JSAXX的博客 2112

RLHF的数学表示

RLHF(Reinforcement Learning with Human Feedback)是一种结合了强化学习和人类反馈的机器学习方法。它通常用于训练智能体(agent)在复杂环境中做出决策,同时利用人类的反馈来指导和改进学习过程。RLHF 没有一个统一的数学表示式,因为它依赖于具体的应用场景和实现细节。然而,我们可以从强化学习和人类反馈的角度来描述RLHF的一些关键数学概念。

xw555666的博客 689

C++——最大子矩阵

C++——最大子矩阵

R.I.P Kobe Bryant 5513

OpenBCI脑电实验避坑指南:如何用Python准确捕捉P300信号

本文详细介绍了使用OpenBCI和Python进行P300脑电信号实验的避坑指南,包括电极贴放、信号采集、信号处理和数据分析等关键步骤。通过实战经验和代码示例,帮助研究者避开常见陷阱,提高P300信号捕捉的准确率,适用于脑机接口和神经科学研究。

weixin_30316097的博客 553

嵌入式STM32F407CET6移植OpenHarmony系统方法

文件末尾添加:export PATH=~/gcc-arm-none-eabi-10-2020-q4-major/bin:$PATH。编译完成文件输出在LiteOs源码目录下out/STM32F407_ATK_Explorer文件夹中。②点击connect to the target,下方会自动显示识别出来的芯片型号以及flash大小。⑤点击program verify并点击start,等待烧写并校验完成,你就能看到程序正在运行了。,在选择刚才我们说的Huawei_LiteOS.hex文件。

嵌入式技术开发 547

详解如何求解最大子矩阵

最近在学dp(dynamic programming:动态规划)的时候遇到了一道最大子矩阵的问题,当时即使学了最大序列和,但看到这个问题时还是无从下手,不知道如何确定最大子矩阵,然后去看别人的代码,还是有点看不懂别人在写啥,所以这篇博客记录自己对这个问题理解~

weixin_59699198的博客 1700

YOLO11涨点优化:知识蒸馏 | 引入FGD(Focal and Global Distillation)蒸馏,让轻量学生模型汲取大模型全局感知力

文章摘要 目标检测模型YOLO11在轻量化部署中存在"全局盲区"问题,即轻量模型感受野不足导致大尺度场景下性能下降。知识蒸馏技术FGD(Focal and Global Distillation)通过双分支机制有效解决这一问题:Focal Distillation分离前景背景特征,让学生模型聚焦关键区域;Global Distillation传递像素间关系信息,弥补全局感知缺陷。实验表明,FGD可使YOLO11轻量版mAP提升2.5%以上,且不增加推理耗时。本文详细解析了FGD原理,并给出YOLO11上的实

2601_95807009的博客 235

浅谈最大子矩阵

浅谈最大子矩阵问题 【最大子矩阵问题】 最大子矩阵问题是一类求解某个矩阵中最大符合条件的子矩阵的问题,一般的条件有子矩阵不能覆盖障碍点、子矩阵的形状等。 【极大化思想】 这里首先解释几个概念: 有效子矩阵:满足题目要求的子矩阵。 极大子矩阵:满足题目要求的、边界无法再扩张的子矩阵。 最大子矩阵:极大子矩阵中最大的一个。 在许多问题中,我们常常见到形如“使xx面积最大”“找到最大的矩形...

weixin_30396699的博客 1038

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

最大子矩阵问题

遍历行的组合 + 尺取法

月巴虫丰博客 806

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

HDU - 1559 最大子矩阵 【DP】

Description 给你一个m×n的整数矩阵,在上面找一个x×y的子矩阵,使子矩阵中所有元素的和最大。 Input 输入数据的第一行为一个正整数T,表示有T组测试数据。每一组测试数据的第一行为四个正整数m,n,x,y(0<m,n<1000 AND 0<x<=m AND 0<y<=n),表示给定的矩形有m行n列。接下来这个矩阵,有m行,每行有n个不...

一定要站在自己热爱的生活里闪闪发光 3万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

POJ 1768 最大子矩阵

这是无意间想起来的一个题,突然见没有什么思路,第一反映就是暴力四个循环搞起,但看了别人的想法才知道怎么做 其中看到了一位大佬的总结,感觉挺好的,然后我就把他的文章加了点修改转了过来,这是大佬的地址: http://blog.youkuaiyun.com/whzyb1991/article/details/47008875 描述 已知矩阵的大小定义为矩阵中所有元素的和。给定一个矩阵,你的任务是找到最大的

Loser 724
上一篇: 有向图的传递闭包
下一篇: mahout推荐引擎源码分析
hxpjava1
博客等级 码龄19年 1365粉丝 511原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hxpjava1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值