题解 | 最大子矩阵

最大子矩阵

https://www.nowcoder.com/practice/a5a0b05f0505406ca837a3a76a5419b3

def max_submatrix_sum(matrix):
    n = len(matrix)
    max_sum = float("-inf")

    # 遍历所有可能的行组合
    for i in range(n):
        temp = [0] * n  # 临时数组,存储从第 i 行到第 j 行的列累加和
        for j in range(i, n):
            # 更新临时数组
            for k in range(n):
                temp[k] += matrix[j][k]
            # 对临时数组使用 Kadane 算法,找到最大子数组和
            current_max = temp[0]
            global_max = temp[0]
            for k in range(1, n):
                current_max = max(temp[k], current_max + temp[k])
                global_max = max(global_max, current_max)
            # 更新全局最大值
            max_sum = max(max_sum, global_max)

    return max_sum


# 输入处理
n = int(input())
matrix = []
for _ in range(n):
    row = list(map(int, input().split()))
    matrix.append(row)

# 计算最大子矩阵和
result = max_submatrix_sum(matrix)
print(result)

全部评论

相关推荐

后端转测开第一人:双非本 没大厂实习 后端肯定没机会了 直接转测开吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务