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

宁波设计网站公司开发公司空置房物业费会计科目

宁波设计网站公司,开发公司空置房物业费会计科目,设计师培训多少,wordpress怎么做相关相似文章链接问题描述 给定一个正整数、负整数和 0 组成的 N M 矩阵,编写代码找出元素总和最大的子矩阵。 返回一个数组 [r1, c1, r2, c2],其中 r1, c1 分别代表子矩阵左上角的行号和列号,r2, c2 分别代表右下角的行号和列号。若有多个满足条件的子矩阵…

问题描述

给定一个正整数、负整数和 0 组成的 N × M 矩阵,编写代码找出元素总和最大的子矩阵。

返回一个数组 [r1, c1, r2, c2],其中 r1c1 分别代表子矩阵左上角的行号和列号,r2c2 分别代表右下角的行号和列号。若有多个满足条件的子矩阵,返回任意一个均可。

解题思路

1. 基础概念:Kadane算法

首先,我们需要了解Kadane算法,这是一种用于在一维数组中找到最大子数组和的算法。给定一个数组,该算法可以找到一个连续子数组,其元素之和最大,并且能返回这个最大和。

2. 将问题从二维转化为一维

要在二维矩阵中寻找最大子矩阵和,我们可以通过固定列的起始和结束点来将问题简化为一维问题:

  • 固定列界限:选择两个列的索引,left和right,使得这两个索引之间的所有列都被包含在内。
  • 累加行元素:对于每个行,计算从left列到right列的元素和,得到一个新的“行和数组”。例如,如果left和right都是1(即第二列),那么行和数组中的每个元素就是原矩阵该行第二列的元素。
3. 应用Kadane算法到行和数组

对每一个固定的列对(left和right),我们都得到了一个行和数组。接下来:

  • 使用Kadane算法:将Kadane算法应用于行和数组,找出这个数组中的最大子数组和以及对应的起始行和结束行。
  • 记录最大和及其位置:如果这次的最大子数组和大于之前记录的最大值,更新最大值和相应的行和列索引。这些索引就确定了最大子矩阵的边界。
4. 处理所有可能的列对
  • 从第一列开始,逐一将每列作为起始列,然后对每个可能的结束列重复上述过程。
  • 这意味着,我们首先固定起始列,然后让结束列从起始列开始向右延伸至矩阵的最后一列,对每种情况都计算行和数组,然后应用Kadane算法。
5. 输出最终结果

在所有列对组合被考虑之后,全局记录的最大值及其对应的子矩阵边界就是我们的答案。这些信息可以用来标识出具有最大和的子矩阵。

代码实现

class Solution {
public:vector<int> getMaxMatrix(vector<vector<int>>& matrix) {int maxSum = INT_MIN;vector<int> result(4); // 存放最终结果,[r1, c1, r2, c2]int rows = matrix.size(), cols = matrix[0].size();// 遍历所有列的组合for (int left = 0; left < cols; ++left) {vector<int> rowSum(rows, 0); // 初始化行和数组for (int right = left; right < cols; ++right) {// 计算从left到right列的行和for (int i = 0; i < rows; ++i) {rowSum[i] += matrix[i][right];}// 应用Kadane算法找到最大的子数组和及其索引int currentMax = INT_MIN, tempSum = 0;int rowStart = 0, tempRowStart = 0, rowEnd = 0;for (int i = 0; i < rows; ++i) {if (tempSum <= 0) {tempSum = rowSum[i];tempRowStart = i;} else {tempSum += rowSum[i];}if (tempSum > currentMax) {currentMax = tempSum;rowStart = tempRowStart;rowEnd = i;}}// 更新全局最大和及对应的子矩阵坐标if (currentMax > maxSum) {maxSum = currentMax;result = {rowStart, left, rowEnd, right};}}}return result;}
};

http://www.yayakq.cn/news/59938/

相关文章:

  • 做网站怎么接私活wordpress程序怎么装
  • 网页网站设计公司排名下载好的字体怎么安装到wordpress
  • 微网站开发框架自建电商网站有哪些
  • 性价比高柳州网站建设网站后台制作步骤
  • 风向 网站市场监督管理局待遇如何
  • 微购物网站建设河南省建设厅网站136号文件
  • 网站排名推广推荐房产网站系统源码
  • 做公众号微网站站点推广策略包括
  • 常州企业自助建站女生学网络工程难吗
  • 网站ipv6改造怎么做 网页代码新乡商城网站建设哪家优惠
  • 网站域名后缀代表什么意思企业网站代码
  • 成都有哪些做公司网站的公司如何用电子邮箱做网站
  • 门户网站建设成本网站开发制作价格
  • seo做的不好的网站网络举报网站
  • 济南企业如何建网站网站为什么上传不了图片
  • 做电影网站会被捉吗建设pc端网站是什么意思
  • 做阿里巴巴网站需要多少钱六安网站建设定制
  • 免费无版权图片网站根据网站集约化建设要求
  • 合肥响应式网站建设方案建设工程公司采购的网站
  • c 网站做死循环网站建设企业建站方案
  • 信用网站建设原则专业定制网红变色杯
  • 济南建站方案关键词优化排名有哪些牛霸天的软件1
  • apt方式 安装wordpress濮阳做网站优化
  • 学做网站开发网络营销策划的基本原则是什么
  • .net购物网站开发中企动力网站icp备案通知
  • 温州网站建设优化公司分类信息网址
  • 北京市的重点门户网站有哪些浙江省住房和城乡建设厅官方网站
  • 自已买域名做网站要多少钱广元建设网站要多少钱
  • 免费推广网站入口2023燕成功的品牌推广案例分析
  • 绍兴网站建设方案书网站开发遇到的问题