アリババと40人の泥棒
15496 ワード
作成日:2022年2月24日午後3:26
の基本論理は同じである. 各格は複文で回転し、自分の上下と左側を比較し、dyに小さな値と自分の値を加える. の模範解答では,まず0行目と10列目をすべてdyに記入する.△これで私のように条件文を書く必要はありません.
インプリメンテーションコード
# 알리바바와 40인의 도둑(Bottom-Up)
import sys
sys.stdin = open("input.txt", "rt")
n = int(input())
board = []
for _ in range(n):
board.append(list(map(int, input().split())))
dy = [[0 for _ in range(n)] for _ in range(n)]
for i in range(0, n):
for j in range(0, n):
if 0<=i-1<n or 0<=j-1<n:
if 0<=i-1<n and 0<=j-1<n:
top = dy[i-1][j]
left = dy[i][j-1]
if top <= left:
dy[i][j] = top + board[i][j]
else:
dy[i][j] = left + board[i][j]
elif 0<=i-1<n:
top = dy[i-1][j]
dy[i][j] = top + board[i][j]
else:
left = dy[i][j-1]
dy[i][j] = left + board[i][j]
else:
dy[i][j] = board[i][j]
print(dy[n-1][n-1])
模範解答
import sys
sys.stdin = open("input.txt", 'r')
if __name__=="__main__":
n=int(input())
arr=[list(map(int, input().split())) for _ in range(n)]
dy=[[0]*n for _ in range(n)]
dy[0][0]=arr[0][0]
for i in range(1, n):
dy[0][i]=dy[0][i-1]+arr[0][i]
dy[i][0]=dy[i-1][0]+arr[i][0]
for i in range(1, n):
for j in range(1, n):
dy[i][j]=min(dy[i-1][j], dy[i][j-1])+arr[i][j]
print(dy[n-1][n-1])
差異
Reference
この問題について(アリババと40人の泥棒), 我々は、より多くの情報をここで見つけました https://velog.io/@lsj8706/알리바바와-40인의-도둑Bottom-Upテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol