• 最大子矩阵


    最大子矩阵

    链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1282
    时间限制: 1000 ms         内存限制: 65536 KB

    【题目描述】

    已知矩阵的大小定义为矩阵中所有元素的和。给定一个矩阵,你的任务是找到最大的非空(大小至少是1 * 1)子矩阵。

    比如,如下4 * 4的矩阵

    0 -2 -7  0

    9  2 -6  2

    -4  1 -4  1

    -1  8  0 -2

    的最大子矩阵是

    9 2

    -4 1

    -1 8

    这个子矩阵的大小是15。

    【输入】

    输入是一个N*N的矩阵。输入的第一行给出N(0<N<=100)。再后面的若干行中,依次(首先从左到右给出第一行的N个整数,再从左到右给出第二行的N个整数……)给出矩阵中的N2个整数,整数之间由空白字符分隔(空格或者空行)。已知矩阵中整数的范围都在[-127,127]。

    【输出】

    输出最大子矩阵的大小。

    【输入样例】

    4
    0 -2 -7  0
    9  2 -6  2
    -4  1 -4  1
    -1  8  0 -2
    

    【输出样例】

    15
    #include<iostream>
    #include<cstring>
    #include<cstdio>
    using namespace std;
    int a[105][105],mp[105][105];
    int main()
    {
        int n,ans=-10000005;
        cin>>n;
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++)
            {
                cin>>a[i][j];
                mp[i][j]=mp[i][j-1]+a[i][j];            
            }
        for(int fis=1;fis<=n;fis++)
            for(int las=fis;las<=n;las++)
            {
                int sum=0;
                for(int i=1;i<=n;i++)
                {
                    sum+=mp[i][las]-mp[i][fis-1];                
                    ans=max(ans,sum);
                    sum=max(0,sum);
                }
            }
        cout<<ans<<endl;        
    }

    【来源】

  • 相关阅读:
    c-复习基础
    java-根据起止IP获取IP段集合
    java-随机数
    java-数组
    TypeSafe Config使用
    日志手段
    git 常用命令
    看门狗
    容器HashSet原理(学习)
    容器Vector原理(学习)
  • 原文地址:https://www.cnblogs.com/EdSheeran/p/8017803.html
Copyright © 2020-2023  润新知