zoukankan      html  css  js  c++  java
  • 12.子矩阵的和

     

     二维前缀和

    原数组a[i][j]

    前缀和数组s[i][j]表示i,j这个点左上角所有数的和

     所以以x1,y1为左上角,x2,y2为右下角的矩阵的和等于:上式。

    这是计算子矩阵的和。

    然后是如何初始化前缀和数组。

     

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 const int N = 1010;
     4 int a[N][N], s[N][N];
     5 int main() {
     6     int n, m, q;
     7     cin >> n >> m >> q;
     8     for (int i = 1; i <= n; i++) {
     9         for (int j = 1; j <= m; j++) {
    10             cin >> a[i][j];
    11             s[i][j] = s[i - 1][j] + s[i][j - 1] - s[i - 1][j - 1] + a[i][j];
    12             //求前缀和 
    13         }
    14     }
    15     while (q--) {
    16         int x1, y1, x2, y2;
    17         cin >> x1 >> y1 >> x2 >> y2;
    18         cout << s[x2][y2] - s[x1 - 1][y2] - s[x2][y1 - 1] + s[x1 - 1][y1 - 1] << endl;
    19         //求子矩阵的和 
    20     }
    21     return 0;
    22 }
  • 相关阅读:
    其他
    Win10
    Win10
    面向对象与设计模式
    Git
    Java
    Git
    Git
    Git
    一、I/O操作(File文件对象)
  • 原文地址:https://www.cnblogs.com/fx1998/p/12817924.html
Copyright © 2011-2022 走看看