結果
| 問題 |
No.225 文字列変更(medium)
|
| コンテスト | |
| ユーザー |
CsTarepanda
|
| 提出日時 | 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 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 22 |
ソースコード
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])
CsTarepanda