最大子矩阵(贪心)
Posted -iris-
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最大子矩阵(贪心)相关的知识,希望对你有一定的参考价值。
虽然我写的是贪心
但这个题哪有贪心的感觉
感觉无从可贪
折磨了我好久之后
我从一篇别人的博客上
受到了启发
类似几何的割补法
将矩阵的行的和算出来
然后再作差比较
得出一块矩阵
在比较之前算出的矩阵权值
看是否大于零,大于零就添上,小于零就舍去
然后进行枚举
然后这个题的核心就差不多了
#include<iostream> #include<cstdio> using namespace std; int N[105][105]; int maxn=-1e3; int main() { int n; cin>>n; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) { cin>>N[i][j]; N[i][j]+=N[i-1][j]; } for(int i=1;i<=n;i++) for(int j=i;j<=n;j++) { int ans=0; for(int l=1;l<=n;l++) { ans=N[j][l]-N[i-1][l]+max(0,ans); maxn=max(ans,maxn); } } cout<<maxn; }
一个细节务必务必务必记得——
maxn初值不能为零,不能为零,不能为零
(就因为这个,几次都没过)
以上是关于最大子矩阵(贪心)的主要内容,如果未能解决你的问题,请参考以下文章
POJ1050 To the Max - 贪心[最大子矩阵和]
贪心——力扣53.最大子序和&&力扣122.买卖股票的最佳时机Ⅱ
华为OD机试真题Python实现最大子矩阵和真题+解题思路+代码(2022&2023)