#645. NOIP2014TG-28

NOIP2014TG-28

当前没有测试数据。

28.(完善程序)

(最大子矩阵和)给出 mmnn 列的整数矩阵,求最大的子矩阵和(子矩阵不能为空)。

输入第一行包含两个整数 mmnn,即矩阵的行数和列数。之后 mm 行,每行 nn 个整数,描述整个矩阵。程序最终输出最大的子矩阵和。

(第一空 22 分,其余 33 分,共 1414 分)

#include<iostream>
using namespace std;

const int SIZE=100;
 
int matrix[SIZE+1][SIZE+1];
int rowsum[SIZE+1][SIZE+1]; //rowsum[i][j]记录第i行前j个数的和
int m,n,i,j,first,last,area,ans;

int main(){
  cin>>m>>n;
  for(i=1;i<=m;i++)
    for(j=1;j<=n;j++)
      cin>>matrix[i][j];
  ans=matrix____________________;
  for(i=1;i<=m;i++)
    ____________________;
    for(i=1;i<=m;i++)
      for(j=1;j<=n;j++)
        rowsum[i][j]=____________________;
    for(first=1;first<=n;first++)
      for(last=first;last<=n;last++){
        ____________________;
        for(i=1;i<=m;i++){
          area+=____________________;
          if(area>ans)
            ans=area;
          if(area<0)
            area=0;
          }
        }
      cout<<ans<<endl;
      return 0;
}

①:{{ input(1) }}

②:{{ input(2) }}

③:{{ input(3) }}

④:{{ input(4) }}

⑤:{{ input(5) }}