【华为OD】C卷真题100分:最大矩阵和 python代码实现[思路+代码]

这篇具有很好参考价值的文章主要介绍了【华为OD】C卷真题100分:最大矩阵和 python代码实现[思路+代码]。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

C++、Java、JS、C代码:

【华为OD】C卷真题100分:最大矩阵和 C/C++代码实现[思路+代码]-CSDN博客

【华为OD】C卷真题100分:最大矩阵和 Java代码实现[思路+代码]-CSDN博客

【华为OD】C卷真题100分:最大矩阵和 JavaScript代码实现[思路+代码]-CSDN博客

【华为OD】C卷真题100分:最大矩阵和 C语言代码实现[思路+代码]-CSDN博客

 

 题目描述:

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

输入描述:

输入的第一行包含2个整数n, m(1 <= n, m <= 10),表示一个n行m列的矩阵,下面有n行,每行有m个整数,同一行中,每2个数字之间有1个空格,最后一个数字后面没有空格,所有的数字的在[-1000, 1000]之间。

输出描述:

输出一行一个数字,表示选出的和最大子矩阵内所有的数字和。

示例1输入输出示例仅供调试,后台判题数据一般不包含示例

输入

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

输出

20

说明

一个3*4的矩阵中,后面3列的子矩阵求和加起来等于20,和最大。

     879                                                         
                                                            
              +---+                                                          
  3            |   |       ++                               +       +---|   
  |           |   | 3      +                6               +  |   +   |        +
  |      +     |   |       +         +                      +    |  +   |       +
  |      +    |   +---+    +        +        +++++          +   +  +   |        +
  |      +    | +      |   +   +----+        |   |          +   +  +   |        +
  |      +  3 | +      |   +   +    +      2 |   |     2    +   +  +   |        +
  |      +    | +      |   +   +    +        |   |          +   +  +   |        +
  |      +---+ +     |    |  |    +    ----+   |   +---+    |  |  +   |         +
  |      |     +     |    |  |    +    |       |   |   |    |  |  +   |         +
  |    1 |     +     | 8  |  |    +  1 |   |    | 1 |   | 1 |   |  +   |        +
  |      |     +     |    |  |    +    |   |    |   |   |   |   |  +   |        +
  |  +---+     +     +---+   |    ++---+    ++   +---+   +---+   |  +   |        +
  |  |         +         |   |    |         ++              |   |  |+   |        +
  |0 |         +         | 0 |  0 |         ++              | 0 |  |+   |        +
  |  |         +         |   |    |         ++              |   |  |+   |        +
  +---+         +          +-------+                       +---+| +|+   |        +
                +                                                    +   |        +
    0   1   2   3   4   5   6   7   8   9  10  11  12 + v:    w  u m    u 1 0 2 4
 

题目解析:

        使用循环来处理即可

代码实现:

def total_result(data, pos, row, col):
    res = []
    for i in range(pos, len(data[0])):
        ss = [sum(data[p][pos:i + 1]) for p in range(row, col + 1)]
        res.append(sum(ss))
    return max(res)


def get_result(data):
    total = 0
    data_len = len(data)
    for i in range(0, data_len):
        for j in range(0, len(data[0])):
            for k in range(i, data_len):
                total = max(total_result(data, j, i, k), total)
    return total


def read_line():
    data = []
    for i in input().split():
        if i != '':
            data.append(int(i))
    return data


def main():
    m, n = read_line()
    data = []
    for i in range(m):
        data.append(read_line())
    res = get_result(data)
    print(res)


if __name__ == '__main__':
    main()

【华为OD】C卷真题100分:最大矩阵和 python代码实现[思路+代码],杂谈,算法,c++,图论,华为od,python,java,c语言文章来源地址https://www.toymoban.com/news/detail-853299.html

到了这里,关于【华为OD】C卷真题100分:最大矩阵和 python代码实现[思路+代码]的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包