Two-dimensional differential C ++ version python version

AcWing 798 difference matrix https://www.acwing.com/problem/content/800/

 

#include <iostream>
#include <cstdio>
#include <algorithm>

using namespace std;

const int N = 1005;

int a[N][N];
int b[N][N];


void sert(int x1, int y1, int x2, int y2, int c)
{
    b[x1][y1] += c;
    b[x2+1][y1] -= c;
    b[x1][y2+1] -= c;
    b[x2+1][y2+1] += c;
}

int main()
{
    int n, m, q;
    cin >> n >> m >> q;
    for(int i = 1; i<= n; ++ i)
        for(int j = 1; j <= m; ++ j)
        {
            cin >> a[i][j];
            sert(i, j, i, j, a[i][j]);
        }
    while(q --)
    {
        int x1, y1, x2, y2, c;
        cin >> x1 >> y1 >> x2 >> y2 >> c;
        SERT (X1, Y1, X2, Y2, C); 
    } 
    for ( int I = . 1 ; I <= n-; ++ I) 
    { 
        for ( int J = . 1 ; J <= m; ++ J) 
        { 
            B [ I] [J] = B [I- . 1 ] [J] + B [I] [J- . 1 ] - B [I- . 1 ] [J- . 1 ] + B [I] [J]; // differential array evaluation is the original prefix and the array 
            COUT << B [I] [J] << "  " ; 
        } 
        COUT << endl; 
    } 
    return  0 ; 
}

 

n, m, q = map(int, input().split())
a = [[0 for i in range(m+5)] for i in range(n+5)]
b = [[0 for i in range(m+5)] for i in range(n+5)]


def insert(x1, y1, x2, y2, c):
    b[x1][y1] += c
    b[x1][y2+1] -= c
    b[x2+1][y1] -= c
    b[x2+1][y2+1] += c


for i in range(1, n+1):
    row = [0] + list(map(int, input().split()))
    for j in range(1, m+1):
        a[i][j] = row[j]
        insert(i, j, i, j, a[i][j])
while q:
    q -= 1
    x1, y1, x2, y2, c = map(int, input().split())
    insert(x1, y1, x2, y2, c)
for i in range(1, n+1):
    for j in range(1, m+1):
        b[i][j] += b[i-1][j] + b[i][j-1] - b[i-1][j-1]
        print(b[i][j], end=" ")
    print("")

Guess you like

Origin www.cnblogs.com/Chaosliang/p/12197554.html