zoukankan      html  css  js  c++  java
  • 最大子矩阵和

    Description

    给出一个m×n的矩阵,请输出它的最大子矩阵和。

    Input

    多测试用例,每个测试用例:

    第一行是两个正整数m和n,表示该矩阵的行数和列数。1 < m, n < 400

    接下来m行,每行n个整数,空格分隔。

    Output

    每个测试用例输出一行:该矩阵的最大子矩阵和。运算结果在int范围内。

    Sample Input

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

    Sample Output

    15

    AC代
    #include<stdio.h>
    #include<string.h>
    int main()
    {
       long  int xsum[502][502];//xsum[i][j]前 i 行 j列的前缀和
       long int i,j,s,n,m,k;
       long long int ans,sum=0;
       memset(xsum,0,sizeof(xsum));
       scanf("%ld",&n);m=n;
       for(i=1;i<=n;i++)
       for(j=1;j<=m;j++)
       {scanf("%ld",&s);
        xsum[i][j]=s+xsum[i-1][j];//xsum[i][j]前 i 行 j列的前缀和
       }
       for(i=1;i<=n;i++)//枚举 从 子阵行高  按 最大子段 原理 求和
       for(j=i;j<=n;j++)
       { ans=0;
         for(k=1;k<=m;k++)
           {ans+=xsum[j][k]-xsum[i-1][k];
             if(ans>sum||sum==0)sum=ans;//先判断 防 全为负数情况 更新 最大值
    if(ans<0)ans=0;//当前小于0 则重新开始;
           }
       }
       printf("%lld
    ",sum);
    return 0;
    }
    View Code
  • 相关阅读:
    mysql数据库——特殊sql语句整理之修改表结构
    mysql数据库引擎——MyISAM,InnoDB
    Golang程序性能分析
    Docker基本操作
    go module
    Docker基础原理
    基于zookeeper或redis实现分布式锁
    漫谈微服务
    快速排序
    设计模式泛谈
  • 原文地址:https://www.cnblogs.com/shuaihui520/p/9043201.html
Copyright © 2011-2022 走看看