#YC337. 枚举特定大小的子矩阵hard

枚举特定大小的子矩阵hard

题目背景

与easy版本的区别在于检查的子矩阵大小以及元素范围

检查大矩阵当中的每个特定大小rcr行c列的子矩阵,是常见操作,方法也很简单,只需要枚举所有子矩阵的左上顶点(i,j)(i,j) ,然后从ii行开始枚举到i+r1i+r-1行,从jj列枚举到j+c1j+c-1

例如,枚举所有的r x c子矩阵


for(int i=1; i<=n; i++) {

	for(int j=1; j<=m; j++) {

		if(i+r-1>n||j+c-1>m)break;//越界

		for(int p=i; p<=i+r-1; p++) {

			for(int q=j; q<=j+c-1; q++) {

//对子矩阵的每个元素A[p][q]做操作

			}

		}

	}

}

题目描述

请你根据上面知识点,来完成本题

给定一个NM列的矩阵,(1N,M200)(1 \leq N,M \leq 200)

所有矩阵元素的绝对值不超过500

请你从所有rxc规模的小矩阵,找到最大的子矩阵和,并输出

输入

第一行输入两个整数N,M1N,M2001\leq N,M\leq 200 .

接下来N行,每一行输入M个整数,其绝对值不超过500

再输入两个整数RR,CC (1RN;1CM)(1 \leq R\leq N; 1\leq C\leq M)

表示要检查的子矩阵大小

输出

最大的RxC子矩阵的内部元素和

样例

4 5
1 0 1 0 1
0 0 1 0 1
0 1 1 0 1
1 0 0 1 0
2 3
4