保研机试刷题——2018年南大机试第一题,最大子矩阵和

本文介绍了如何解决2018年南大保研机试中的第一题,即寻找矩阵中最大非空子矩阵的问题。通过将二维矩阵转化为一维数组,再计算最大连续子序列和,可以求得最大子矩阵的大小。文章提供了样例输入和输出,并阐述了求解思路。
摘要由CSDN通过智能技术生成

题目是这样的:

已知矩阵的大小定义为矩阵中所有元素的和。给定一个矩阵,你的任务是找到最大的非空(大小至少是1 * 1)子矩阵。
比如,如下4 * 4的矩阵

0 -2 -7 0
9 2 -6 2
-4 1 -4 1
-1 8 0 -2

的最大子矩阵是

9 2
-4 1
-1 8

这个子矩阵的大小是15。

输入

输入是一个N * N的矩阵。输入的第一行给出N (0 < N <= 100)。
再后面的若干行中,依次(首先从左到右给出第一行的N个整数,再从左到右给出第二行的N个整数……)给出矩阵中的N2个整数,整数之间由空白字符分隔(空格或者空行)。
已知矩阵中整数的范围都在[-127, 127]。

输出

测试数据可能有多组,对于每组测试数据,输出最大子矩阵的大小。

样例输入

1
27 
3
-40 29 -16 
38 18 22 
24 -35 5 

样例输出

27
78

其实吧,这题不难,主要就是要能转过来一个弯:

将二维数组转化为一维数组,然后通过该一维数组来找到最大连续子序列。

比如最大的连续子矩阵的和为从第 i 行 到 第 j 行的元素在列的方向上相加,得到一个一维数组arrtemp[],然后计算出这个一维数组的最大子序列的和maxtemp,通过对 i 和 j 进行枚举(1<=i<=N, i<=j

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值