目录
前言
建议读者学习完一维前缀和与一维差分后阅读
二维前缀和
二维前缀和就是在一维前缀和上提高了一个维度。
一维前缀和:
#include<bits/stdc++.h>
using namespace std;
int a[100],b[100],n;
int main()
{
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
b[i]=b[i-1]+a[i];
}
for(int i=1;i<=n;i++){
cout<<b[i]<<" ";
}
return 0;
}
上图代码用b数组保存了a数组的前缀和。
那二维前缀和就是求整个二维矩阵内的前缀和。
如图,a[3][3]的前缀和就是整个黄色区域的和。
我们用b数组来保存a数组的前缀和。
那b[m][n]又等于什么呢?(a[n][m]的前缀和)
答案是:b[m][n]=b[m-1][n]+b[m][n-1]-b[m-1][n-1]+a[m][n]。
现在我就给读者解释一下。<