最大子矩阵和

0013算法笔记——【动态规划】最大子段和问题,最大子矩阵和问题,最大m子段和问题 1、最大子段和问题      问题定义:对于给定序列a1,a2,a3……an,寻找它的某个连续子段,使得其和最大。如( -2,11,-4,13,-5,-2 )最大子段是{ 11,-4,13 }其和为20。      (1)枚举法求解      枚举法思路如下:      以a[0]开始: {a[0]}, {a[0],a[1]},{a[0],a[1],a[2]}……{a[0],a[1], 阅读详情

一、题目

一个M*N的矩阵,找到此矩阵的一个子矩阵,并且这个子矩阵的元素的和是最大的,输出这个最大的值。

二、解题思路

这题是最大子段和的二维推广,实质可以将二维进行枚举,并化为最大子段和求解。最后子矩阵一定是在某两行之间的。因此假设

我们认为子矩阵在第i行和第j行之间,我们如何得到i和j呢,可以进行枚举。  枚举所有1<=i<=j<=M,表示最终子矩阵选取的行范围。

然后对每一种i,j行间选定后对列用最大子段和处理(可以想象成将矩阵的 i 行到 j 行进行压缩成一行后对这一行进行最大字段和求解)。

三、代码

#include <iostream>
using namespace std;
int main (){
	int m, n;  // m行n列
	cin>>m>>n;
	int a[m+1][n+1];
	int t;
	for(int i = 1; i<=n; i++) a[0][i] = 0;   // 第0行填0 
	for(int i=1; i<=m; i++)
		for(int j=1; j<=n; j++){
			cin>>t;
			a[i][j] = a[i-1][j] + t;	
		}
	int b[n+1];  // 记录每一轮的最大子段和 
	int Max = a[1][1];   // 记录最大子矩阵和 
	for(int i=1; i<=m; i++){
		for(int j=i; j<=m; j++){
			b[1] =  a[j][1] - a[i-1][1];  // 第一个数复制
			Max = max(Max, b[1]);
			for(int k=2; k<=n; k++){
				b[k] = max(b[k-1] + a[j][k] - a[i-1][k], a[j][k] - a[i-1][k]);  // 每一轮的最大子段和算法 
				if(b[k] > Max) Max = b[k];  // 更新总的最大子矩阵和 
			}
		}
	}	
	cout<<Max<<endl;
	
	return 0;
} 

 

最大子矩阵和 (LeetCode面试题17.24) 题目描述: 给定一个正整数、负整数和 0 组成的 N × M矩阵,编写代码找出元素总和最大的子矩阵。 返回一个数组 [r1, c1, r2, c2],其中 r1, c1 分别代表子矩阵左上角的行号和列号,r2, c2 分别代表右下角的行号和列号。若有多个满足条件的子矩阵,返回任意一个均可。 输入: [ [-1,0], [0,-1] ] 输出:[0,1,0,1] 解释:最大的和是0 答案可以是0 1 0 1或者1 0 1 0 说明:1 <= matrix.length, matr... 阅读详情

相关推荐

最大子矩阵和问题归纳总结

一,最大子矩阵问题: 给定一个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+(-

逍遥小章 9128

Codeforces Round #674 B. Symmetric Matrix(水题)

题目地址:传送门 题目贴上: 题意,给你n种 2x2的矩阵,并且每种矩阵可以无限次使用,问你是否能组成mxm的矩阵(新矩阵必须是严格按照主对角线对称矩阵) 思路:首先给你的2x2矩阵,很明显我们不能拼成奇数长宽的矩阵,所以如果m为奇数,直接输出no,最后考虑m为偶数的情况,很明显,如果给你n个2x2矩阵当中没有一个矩阵的主对角线对称矩阵,那肯定要无法组成更大的mxm型的对称矩阵 代码: #include<bits/stdc++.h> using namespace std; struct Po

YSJ367635984的博客 928

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)行...

qq_43648723的博客 4289

动态规划之--最大子段和/最大子矩阵和

一、最大子段和 最大子段和针对的是一维的情形,采用蛮力法可以在O(n2)O(n^2)O(n2)的时间复杂度内进行求解。而采用动态规划的方法则则可以在O(n)O(n)O(n)的时间复杂度内进行求解。这里我们着重介绍动态规划的方法。 问题描述: 对于长度为n的数组num[N],求解其最大的连续子段和maxsubSum=∑n=ijnum[n],其中有0≤i≤j≤nmaxsubSum=\sum\limit...

qq_37053885的博客 6065

c++求最大子矩阵和问题

最大子矩阵和问题。给定m行n列的整数矩阵A,求矩阵A的一个子矩阵,使其元素之和最大。 输入格式: 第一行输入矩阵行数m和列数n(1≤m≤100,1≤n≤100),再依次输入m×n个整数。 输出格式: 输出第一行为最大子矩阵各元素之和,第二行为子矩阵在整个矩阵中行序号范围与列序号范围。 输入样例1: 5 6 60 3 -65 -92 32 -70 -41 14 -38 54 2 29 69 88 ...

weixin_44740740的博客 2761

最大子矩阵和问题

在一个二维整数矩阵里,需要挑选出一个子矩阵,让这个子矩阵里所有数字的总和尽可能大,我们把这样的子矩阵称作“和最大子矩阵”。子矩阵的选取规则是,它必须是原矩阵中一段相互连续的矩形区域。个整数,且每行数字之间用空格分隔,这些数字的取值范围是 -1000 到 1000。输出要求为:输出一个数字,这个数字就是选出的“和最大子矩阵”里所有数字的总和。:在这个矩阵中,值为 50 的这个元素单独构成的子矩阵和最大。列组成的子矩阵和为 20,是所有子矩阵中和最大的。,分别代表矩阵的行数和列数,

m0_62153576的博客 142

最大子矩阵和(详解)

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

KeepTing 5万+

vivado实现SDI接口

XAPP1249,用来介绍UHD_SDI的实现。

Huskar_Liu的博客 7076

最大子矩阵题解

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

bt1JSAXX的博客 2112

我用两种方式玩转 MCP:CherryStudio vs VS Code 实测手记

MCP,全称,你可以理解为——给大模型装上“手脚”和“工具箱”。传统大模型像一位博学但手不能动的学者:“我知道怎么算圆周率,但没法打开计算器。而支持 MCP 的模型,能通过标准协议自动调用外部工具(比如fetch网络请求、readFile读文件、shell执行命令),真正做到“知行合一”。输入后**,保存,**之后就显示出来了MCP 不是“魔法”,而是把 AI 从“问答机”升级为“智能代理”的关键一步。工具本身不难,难的是“知道它能解决什么问题”。

zyq569的博客 1020

A Super-Resolution Imaging Method for Forward-Looking Scanning Radar Based on Improved TV论文阅读

具体而言,作者提出了一种改进的总变差(Improved Total Variation, ITV)方法,通过引入。论文旨在解决前视扫描雷达(Forward-Looking Scanning Radar)超分辨率成像中传统。(Batch Processing),以增强图像边缘特征的保留能力,并提升计算效率。论文的核心创新点在于对传统TV正则化的邻域梯度计算进行扩展,提出。ITV剖面(图3d)在噪声下仍保持矩形边缘,仅存。​(公式10):实现稀疏约束。),抑制远端单元贡献。(幅度远低于目标)。

yangqoor的博客 1239

C++——最大子矩阵

C++——最大子矩阵

R.I.P Kobe Bryant 5513

光伏系统选型指南:5种主流MPPT算法优缺点对比(附选型流程图)

本文深入剖析了光伏系统中五种主流MPPT算法的核心原理与性能差异。通过对比扰动观察法、电导增量法、恒定电压法、模糊逻辑控制及人工智能算法在追踪精度、响应速度、实现成本与稳定性等方面的表现,为不同应用场景(如户用、工商业及大型电站)提供了清晰的选型决策流程图和实战指南,帮助工程师优化系统效率与投资回报。

weixin_29294597的博客 106

详解如何求解最大子矩阵

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

weixin_59699198的博客 1700

无人机基本组成部件

无人机基本组成部件

qq_37410522的博客 1万+

logisim实验六:MIPS运算器设计

实验目的 学生理解算术逻辑运算单元(ALU)的基本构成,掌握 Logisim 中各种运算组件的使用方法,熟悉多路选择器的使用,能利用前述实验完成的 32 位加法器、 Logisim 中的运算组件构造指定规格的 ALU 单元。 设计要求 利用前面实验封装好的 32 位加法器以及 logisim 平台中现有运算部件构建一个 32 位算术逻辑运算单元(禁用 Logisim 系统自带的加法器,减法器),可支持算术加、减、乘、除,逻辑与、或、非、异或运算、逻辑左移、逻辑右移、算术右移运算,支持常用程序状态标志(有符号

gyp0205的博客 2万+

求最大子矩阵和

求最大子矩阵和

weixin_66353299的博客 1768

深入浅出一文搞懂Raft协议

前言 在分布式的世界里,要说最核心最复杂的功能,一致性的实现无出其右,之前的paxos算法堪称经典,被认为是同类算法中效果最好的,基本上成为分布式一致性的代名词,但是paxos算法也是出了名的难理解,而且相当不好实现。本人也花了很多时间、看了很多材料也没有真正理解。所以基于paxos的思想进行的一致性算法的简化和实现就成为了现实的需求,在此背景下,本文的主角Raft就出现了。 Raft算法的头号目标就是容易理解(UnderStandable),这从论文中就可以看出来。当然,R...

microGP的专栏 6485

动态规划之最大子矩阵和问题

最大子矩阵和问题。给定m行n列的整数矩阵A,求矩阵A的一个子矩阵,使其元素之和最大。 输入格式: 第一行输入矩阵行数m和列数n(1≤m≤100,1≤n≤100),再依次输入m×n个整数。 输出格式: 输出第一行为最大子矩阵各元素之和,第二行为子矩阵在整个矩阵中行序号范围与列序号范围。 输入样例1: 5 6 60 3 -65 -92 32 -70 -41 14 -38 54 2 29 ...

Cloud_lfqc的博客 2400

基于YOLOv8的建筑材料分类系统:从数据集构建到UI界面实现

建筑材料分类数据集需要包含各种常见建筑材料的图像,并对每种材料进行标注。砖块(Brick)混凝土(Concrete)钢筋(Rebar)木材(Wood)瓷砖(Tile)玻璃(Glass)钢材(Steel)塑料(Plastic)石膏板(Drywall)绝缘材料(Insulation)如果没有找到合适的公开数据集,可以构建自己的数据集。使用智能手机或专业相机拍摄各种建筑材料的照片确保在不同光照条件、角度和背景下拍摄每类材料至少收集300-500张图像。

YOLO 489

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

最大子矩阵和求解

目录 问题概述: 求解思路: 1.求解一维矩阵的最大子段和 2.相邻两行相加求解所得行最大字段和意义的分析 3.最大和子矩阵问题的求解算法 最大子段和求解代码: 最大子矩阵和求解代码: 时间复杂度分析: 问题概述: 给定某矩阵,则存在一个子矩阵(可以为空)使该子矩阵的所有数字之和最大。求解这个最大和。 求解思路: 1.求解一维矩阵的最大子段和 我们假设b[j]表示以a[j]为结尾元素的最大子段和,在这样的条件下,我们可以得到b[j]的递推式为: ...

emandora的博客 1768

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【最大子矩阵和】HDU1559-最大子矩阵

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

wa的一声就哭了 1470

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

上一篇: 最大子段和
下一篇: 护林员盖房子
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值