2次元差分のC ++バージョンのPythonのバージョン

798の違いをAcWing行列https://www.acwing.com/problem/content/800/

 

書式#include <iostreamの> 
の#include <cstdioを> 
する#include <アルゴリズム> 使用して名前空間をSTD。const int型 N = 1005 ; int型[N] [N]。
INT B [N]、[N]。ボイド 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 [×2 + 1

 

 




] [Y2 + 1 ] + = C。
} 

int型のmain()
{ 
    int型N、M、Q。
    CIN >> N >> M >> Q。
    以下のためにINT iが= 1 ; I <= N; ++ I)
         のためにINT J = 1 ; J <= M; ++ j)は
        { 
            CIN >> [I] [J]。
            SERT(I、J、I、J、[I] [J])。
        } 
    一方、(Q - 
    { 
        int値X1、Y1、X2、Y2、C。
        CIN >> X1 >> Y1 >> X2 >> Y2 >> C。
        ; SERT(X1、Y1、X2、Y2、C)
    } 
    ためINT I = 1 ; I <= N; ++ I)
    { 
        ため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]; // 微分配列の評価は、元の接頭辞と配列である 
            COUT << B [I] [J] << "  " ; 
        } 
        COUT << ENDL; 
    } 
    戻り 0 ; 
}

 

N、M、Q = マップ(INT、入力()。スプリット()) = [0 用の I における範囲(M + 5)] のための I における範囲(N + 5 )] 
B = [0 のI 範囲(M + 5)] のための I における範囲(N + 5 )] 


DEF インサート(X1、Y1、X2、Y2、C):
    B [X1] [Y1] + = C 
    B [X1] [Y2 +1 ] - = C 
    B [X 2 +1] [Y1] - = C 
    B [X 2 +1] [Y2 + 1] + = C 


用の私は、範囲(1、N + 1 = [0] + リスト(マップ(INT、入力()スプリット())。)
     のために、J における範囲(1、M + 1 ):
        [I] [J] = 行[J] 
        インサート(I、J、 I、J、[I] [J])
一方、Q:
    Q - = 1つの
    X1、Y1、X2、Y2、C = 地図(INT、入力()スプリット())
    インサート(X1、Y1、X2、Y2 、C)
のための I における範囲(1、N + 1 のための J の範囲(1、M + 1 ):
        B [i]は[J] + = B [I-1]を[J] + B [i]は[J-1] - B [I-1] [J-1 ]
         印刷(B [I] [J]、端= "  " 印刷"" 

おすすめ

転載: www.cnblogs.com/Chaosliang/p/12197554.html