1210 - Ladder1
11624 ワード
問題の説明
リンク
問題を解く
各位置は方向とインデックスを考慮するため,再帰関数で表す.の下部にある2つの要素のインデックスを探します. インデックスから、再帰関数を使用して下から上へ. 上の方向は方向=0、左方向は方向=1、右方向は方向=1とする. の上向きの方向であれば、インデックスが左側または右側に存在するかどうかを確認し、存在する場合は、パスがあるかどうかを確認します. の左または右方向の場合は、上にインデックスがあるかどうかを確認し、ある場合は長さがあるかどうかを確認します. の最上位に達すると、値が返されます. これは個人的には難しいと思いますが、喜んでいる問題の一つです.
コード#コード#
リンク
問題を解く
各位置は方向とインデックスを考慮するため,再帰関数で表す.
コード#コード#
def move(x, y, direction, arr):
if direction == 0:
if y+1 <= 99 and arr[x][y+1] == 1:
return move(x, y+1, 1, arr)
if y - 1 >= 0 and arr[x][y - 1] == 1:
return move(x, y - 1, -1, arr)
if x-1 >= 0 and arr[x-1][y] == 1:
return move(x-1, y, 0, arr)
if x == 0:
return y
if direction == 1:
if x-1 >= 0 and arr[x-1][y] == 1:
return move(x-1, y, 0, arr)
if y+1 <= 99 and arr[x][y+1] == 1:
return move(x, y+1, 1, arr)
if direction == -1:
if x-1 >= 0 and arr[x-1][y] == 1:
return move(x-1, y, 0, arr)
if y - 1 >= 0 and arr[x][y - 1] == 1:
return move(x, y - 1, -1, arr)
for T in range(10):
tc = int(input())
arr = [list(map(int, input().split())) for _ in range(100)]
for i in range(100):
if arr[99][i] == 2:
print(f'#{tc} {move(99, i, 0, arr)}')
break
Reference
この問題について(1210 - Ladder1), 我々は、より多くの情報をここで見つけました https://velog.io/@singco/1210-Ladder1テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol