给你一个 m x n 的矩阵 mat 和一个整数 k ,请你返回一个矩阵 answer ,其中每个 answer[i][j] 是所有满足下述条件的元素 mat[r][c] 的和:
i - k <= r <= i + k,
j - k <= c <= j + k 且
(r, c) 在矩阵内。
示例 1:
输入:mat = [[1,2,3],[4,5,6],[7,8,9]], k = 1
输出:[[12,21,16],[27,45,33],[24,39,28]]
示例 2:
输入:mat = [[1,2,3],[4,5,6],[7,8,9]], k = 2
输出:[[45,45,45],[45,45,45],[45,45,45]]
提示:
m == mat.length
n == mat[i].length
1 <= m, n, k <= 100
1 <= mat[i][j] <= 100
没什么好说的,傻方法,挨个加就是了
class Solution {
public:
vector> matrixBlockSum(vector>& mat, int k) {
int m=mat.size();
int n=mat[0].size();
vector> answer(m,vector(n));
int i,j;
for(i=0;i=0?minrow:0;
maxrow=maxrow=0?mincol:0;
maxcol=maxcol
方法二 动态规划
class Solution {
public:
vector> matrixBlockSum(vector>& mat, int k) {
int m=mat.size();
int n=mat[0].size();
vector> answer(m,vector(n));
vector> p(m+1,vector(n+1));
int i,j;
for(i=1;i<=m;i++){
for(j=1;j<=n;j++){
p[i][j]=p[i-1][j]+p[i][j-1]-p[i-1][j-1]+mat[i-1][j-1];
}
}
for(i=0;i=0?minrow:0;
maxrow=maxrow=0?mincol:0;
maxcol=maxcol 

![1314. [C++]矩阵区域和 1314. [C++]矩阵区域和](http://www.mshxw.com/aiimages/31/311586.png)
