結果

問題 No.225 文字列変更(medium)
ユーザー CsTarepandaCsTarepanda
提出日時 2019-07-01 09:05:25
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 85 ms / 5,000 ms
コード長 887 bytes
コンパイル時間 200 ms
コンパイル使用メモリ 82,048 KB
実行使用メモリ 83,268 KB
最終ジャッジ日時 2024-07-08 05:55:19
合計ジャッジ時間 2,636 ms
ジャッジサーバーID
(参考情報)
judge4 / judge5
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 60 ms
78,720 KB
testcase_01 AC 71 ms
80,732 KB
testcase_02 AC 33 ms
51,968 KB
testcase_03 AC 31 ms
51,968 KB
testcase_04 AC 32 ms
51,968 KB
testcase_05 AC 34 ms
51,968 KB
testcase_06 AC 33 ms
52,284 KB
testcase_07 AC 33 ms
51,840 KB
testcase_08 AC 33 ms
51,968 KB
testcase_09 AC 34 ms
52,096 KB
testcase_10 AC 32 ms
52,224 KB
testcase_11 AC 33 ms
52,200 KB
testcase_12 AC 82 ms
82,584 KB
testcase_13 AC 79 ms
82,996 KB
testcase_14 AC 80 ms
83,268 KB
testcase_15 AC 85 ms
82,688 KB
testcase_16 AC 79 ms
82,824 KB
testcase_17 AC 81 ms
82,988 KB
testcase_18 AC 79 ms
82,556 KB
testcase_19 AC 78 ms
82,924 KB
testcase_20 AC 80 ms
82,492 KB
testcase_21 AC 80 ms
82,952 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

import sys
sys.setrecursionlimit(10**6)
slen, tlen = map(int, input().split())
s = input()
t = input()

# dp = [[None] * tlen for _ in range(slen)]
# def dfs(a=slen - 1, b=tlen - 1):
#     if a == b == -1:
#         return 0
#     if a == -1:
#         return b + 1
#     if b == -1:
#         return a + 1
#
#     if dp[a][b] is not None:
#         return dp[a][b]
#     r = min(
#         dfs(a - 1, b) + 1,
#         dfs(a, b - 1) + 1,
#         dfs(a - 1, b - 1) + (s[a] != t[b]),
#     )
#     dp[a][b] = r
#     return r
# print(dfs())

dp = [[0] * (tlen + 1) for _ in range(slen + 1)]
for b in range(tlen):
    dp[-1][b] = b + 1

for a in range(slen):
    dp[a][-1] = a + 1

for a in range(slen):
    for b in range(tlen):
        dp[a][b] = min(
            dp[a - 1][b] + 1,
            dp[a][b - 1] + 1,
            dp[a - 1][b - 1] + (s[a] != t[b]),
        )
print(dp[a][b])
0