アルゴリズム学習—白駿1987号:アルファベット
もんだいぶんせき
R x Cの碁盤の上で馬の通ることができる最大の格数を求めます
どんなアルゴリズムを使うべきですか?
アルゴリズムコード
from collections import deque
R, C = map(int, input().split())
board = [list(input().strip()) for _ in range(R)]
dx = [0, 0, -1, 1]
dy = [-1, 1, 0, 0]
answer = 1
def bfs(x, y):
global answer
q = deque()
q.append((x, y, board[x][y]))
while q:
x_, y_, alpha_ = q.pop()
for i in range(4):
new_x = x_ + dx[i]
new_y = y_ + dy[i]
if ((0 <= new_x < R) and (0 <= new_y < C)):
if board[new_x][new_y] not in alpha_:
q.append((new_x, new_y, alpha_ + board[new_x][new_y]))
answer = max(answer, len(alpha_) + 1)
bfs(0, 0)
print(answer)
Reference
この問題について(アルゴリズム学習—白駿1987号:アルファベット), 我々は、より多くの情報をここで見つけました https://velog.io/@guri_coding/알고리즘-스터디-백준-1987번-알파벳テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol