二维前缀和
📅 2026/7/19 3:13:56
👁️ 阅读次数
📝 编程学习
其实就是两步
第一步:计算f(i,j)到起始点(默认为(1,1))前缀和
公式:f(i,j)=f(i-1,j)+f(i,j-1)-f(i-1,j-1)+a[i,j];
可以用图像来表示会更清楚
此时所有格子都是白色的
此时是(1,1)到(i,j-1)
此时是又加上了(1,1)到(i-1,j)
发现重复的是(1,1)到(i-1,j-1)这块
然后我们减去即可
此时就只需要加上最后的点a[i,j]即可
所以计算公式就是f(i,j)=f(i-1,j)+f(i,j-1)-f(i-1,j-1)+a[i,j];
第二步:调用计算出任意两点间围成矩形的值(从(x1,y1)到(x2,y2))
ans=f(x2,y2)−f(x2,y1−1)−f(x1−1,y2)+f(x1−1,y1−1)
编程学习
技术分享
实战经验