水题(基本上不能算dp了,就是一个用累加和求区间和(二维版)的思想)。时间复杂度O(n^2)。
HDU 1081才是真正的“最大子矩阵和”(最大子串和的二维版)。时间复杂度O(n^3)。
因为给定了子矩阵的行数,所以真的不用再来两层循环确定顶行底行了。。。然后还是将之视为一行(每列的累加和)。而且子矩阵的列数也给了,那就对这一行再来一遍累加,然后枚举M-Y+1
次就完事了。
这种题还可以这么出:给定子矩阵行数,不限制列数。(可以用最大子串和了,时间复杂度还是O(n^2))
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <vector>
#include <cstring>
#include <string>
#include <queue>
using namespace std; // 这题还是dp吗?(17.6.5) 算吧(19.4.23)
int N, M, X, Y, T;
int sum[1000]