0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

部分的な2次元累積和を求めるやり方

Posted at

部分的な2次元累積和を求めるやり方

概要

image

  • 青枠内の累積値を以下の手順で求める
  1. 左上からの累積値をすべての箇所で算出する
  2. 1で算出されたものを利用して部分的な2次元累積和(青枠内)を求める

全ての左上からの累積値を求める

考え方

  • 赤の累積値 + 青の値 = 青の累積値

image

手順

  • 実際のプログラムでは事前準備として累積値の初期値は0なので上に1行、左に1行追加されて6行6列で初期化を行う。

image

  1. 上の累積値は27
  2. 左の累積値を足すと 27 + 24 = 51
  3. 重なる部分の合計を引くと 51 - 15 = 36
  4. 元の2次元配列の値 を足すと 36 + 6 = 42

image

  • 完成形(実際のプログラムでは左と上の0は不要になるので消しておいたほうがよい。)

image

全体の累積値から部分的な累積値を算出

考え方

  • 対象範囲を含んだ左上からの累積値 - 不要な部分を取り除いたもの

手順

  • 先に算出した累積値の2次元配列を使う
  1. 左上からの合計値 64
  2. 上の合計値を引く 64 - 24 = 40
  3. 左の合計を引く 40 - 10 = 30
  4. 2重に引いた部分を足す 30 + 3 = 33。よって答えは33

image

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?