結果

問題 No.1949 足し算するだけのパズルゲーム(2)
ユーザー lilictakalilictaka
提出日時 2022-05-20 23:42:29
言語 Python3
(3.12.2 + numpy 1.26.4 + scipy 1.12.0)
結果
RE  
実行時間 -
コード長 855 bytes
コンパイル時間 262 ms
コンパイル使用メモリ 12,672 KB
実行使用メモリ 25,856 KB
最終ジャッジ日時 2024-09-20 10:09:33
合計ジャッジ時間 3,678 ms
ジャッジサーバーID
(参考情報)
judge5 / judge3
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 28 ms
10,752 KB
testcase_01 AC 30 ms
10,752 KB
testcase_02 AC 30 ms
10,752 KB
testcase_03 AC 28 ms
10,880 KB
testcase_04 AC 28 ms
10,752 KB
testcase_05 AC 28 ms
10,752 KB
testcase_06 AC 28 ms
10,752 KB
testcase_07 RE -
testcase_08 WA -
testcase_09 RE -
testcase_10 RE -
testcase_11 RE -
testcase_12 RE -
testcase_13 WA -
testcase_14 RE -
testcase_15 RE -
testcase_16 AC 100 ms
17,152 KB
testcase_17 RE -
testcase_18 AC 97 ms
17,280 KB
testcase_19 AC 27 ms
10,752 KB
testcase_20 RE -
testcase_21 AC 32 ms
11,008 KB
testcase_22 RE -
testcase_23 AC 29 ms
10,880 KB
testcase_24 RE -
testcase_25 RE -
権限があれば一括ダウンロードができます

ソースコード

diff #

H,W,Y,X = map(int,input().split())

seen = [[False] * W for _ in range(H)]
INF = float('inf')
memo = [[-INF] * W for _ in range(H)]
A = []
for _ in range(H):
    tmp = list(map(int,input().split()))
    A.append(tmp)
def check(h,w):
    if 0 <= h < H and 0 <= w < W:
        return True
    else:
        return False
ans = False
def dfs(h,w,a):
    global ans
    if h == H -1 and w == W-1:
        print('Yes')
        exit()
    seen[h][w] = True
    if memo[h][w] >= a:
        return 
    memo[h][w] = a
    for dh,dw in [(-1,0),(1,0),(0,1),(0,-1)]:
        nh = h + dh
        nw = w + dw
        if check(nh,nw) and not seen[nh][nw] and A[nh][nw] < a:
            dfs(nh,nw,a + A[nh][nw])
            seen[nh][nw] = False
        if check(nh,nw) and seen[nh][nw] and memo[nh][nw] < a:
            dfs(nh,nw,a)
dfs(Y-1,X-1,A[Y-1][X-1])
print('No')

0