码迷,mamicode.com
首页 > 其他好文 > 详细

poj 1050 最大子矩阵

时间:2018-11-01 22:22:21      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:scanf   using   poj   aix   int   style   mes   最大子矩阵   oda   

 

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\n",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\n",maix);
}

 

poj 1050 最大子矩阵

标签:scanf   using   poj   aix   int   style   mes   最大子矩阵   oda   

原文地址:https://www.cnblogs.com/mltang/p/9892353.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!