公式
C - 宝石集めの冒険 / Adventure of Collecting Gems 解説
by
C - 宝石集めの冒険 / Adventure of Collecting Gems 解説
by
sounansya
\(d[i][j]\) を「マス \((1,1)\) からマス \((i,j)\) に移動したときの通過するマスの宝石の価値の総和の最大値」とします。
\(d[1][1]=A_{i,j}\) です。また、\(d[i][j]=\max(d[i-1][j],d[i][j-1])+A_{i,j}\) です。
この遷移に基づいて計算した時の \(d[N][M]\) の値が求める答えとなります。
n, m = map(int, input().split())
a = [list(map(int, input().split())) for _ in range(n)]
d = [[0] * m for _ in range(n)]
d[0][0] = 0
for i in range(n):
for j in range(m):
val = 0
if i != 0:
val = max(val, d[i - 1][j])
if j != 0:
val = max(val, d[i][j - 1])
d[i][j] = val + a[i][j]
print(d[-1][-1])
投稿日時:
最終更新:
