■ 前提条件
値:1,5,9,7,5,3,2,5,8,4
出力:[2:7]の区間の値を出す
● 非累積和で実装
# === 非累積和
tmp = []
arr = [1,5,9,7,5,3,2,5,8,4]
for i in range(2, 8):
tmp_i = arr[i]
tmp.append(tmp_i)
print(sum(tmp)) # 31を出力
● 累積和で実装
###### ============= 累積和
arr = [1,5,9,7,5,3,2,5,8,4] # 10個要素
s = [0] * 11 # arr より1つ多い 配列要素を作成する
for i in range(10):
s[i + 1] = s[i] + arr[i]
# 累積和 同士で 演算して解を出す
print(s[8] - s[2]) # s[8] 37 - s[2] 6 = 31
● 累積和ループ表
ループ回数 , 配列sの値 , 配列aの値
0: s0 0 | a0 1
1: s1 1 | a1 5
2: s2 6 | a2 9
3: s3 15 | a3 7
4: s4 22 | a4 5
5: s5 27 | a5 3
6: s6 30 | a6 2
7: s7 32 | a7 5
8: s8 37 | a8 8
9: s9 45 | a9 4
10: s10 49 |