poj 1050 最大子矩阵
Posted mltang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了poj 1050 最大子矩阵相关的知识,希望对你有一定的参考价值。
a11 a12 a13 a14 a15
a21 a22 a23 a24 a25
a31 a32 a33 a34 a35
a41 a42 a43 a44 a45
a51 a52 a53 a54 a55
枚举矩阵每一列的区间,当成最长子串的dp方式就能过了
你把a21 a31 a41 看成一个元素,值是这三个元素的和,后面的列同理
https://www.cnblogs.com/GodA/p/5237061.html
这个人讲的非常好
#include<iostream> #include <cstdio> using namespace std; const int maxn = 105; int arr[maxn][maxn]; int sum[maxn][maxn]; int main() { int n; scanf("%d",&n); for(int i = 1; i <= n; ++i ) { for(int j = 1; j <= n; ++j) { scanf("%d",&arr[i][j]); } } for(int i = 1; i <= n; ++i) { for(int j = 1; j <= n; ++j) { sum[i][j] = sum[i][j-1] + arr[j][i]; } } /*for(int i = 1; i <= n; ++i) { for(int j = 1; j <= n; ++j) { printf("%d ",sum[i][j]); } }*/ int maix = 0; for(int i = 1; i <= n; ++i) { for(int j = i+1; j <= n; ++j) { int b = 0; for(int k = 1; k <= n; ++k ) { if(b > 0) { b += sum[k][j] - sum[k][i]; } else { b = sum[k][j] - sum[k][i]; } if(b > maix) maix = b; } } } printf("%d ",maix); }
以上是关于poj 1050 最大子矩阵的主要内容,如果未能解决你的问题,请参考以下文章
最大子矩阵,最大连续子数组进阶,动态规划初级,poj1050