結果
| 問題 | No.225 文字列変更(medium) |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2015-06-13 16:08:38 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
RE
(最新)
AC
(最初)
|
| 実行時間 | - |
| コード長 | 857 bytes |
| 記録 | |
| コンパイル時間 | 142 ms |
| コンパイル使用メモリ | 12,800 KB |
| 実行使用メモリ | 40,440 KB |
| 最終ジャッジ日時 | 2024-07-06 19:36:55 |
| 合計ジャッジ時間 | 9,767 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 20 RE * 2 |
ソースコード
def read_data():
n, m = map(int, input().split())
S = input().strip()
T = input().strip()
return n, m, S, T
memo = [[-1] * 1001 for i in range(1001)]
def f(a, b, S, T):
'''
f(a, b, S, T) S[:a] を T[:b] に変更するのに必要な最低ステップ数
'''
global memo
if memo[a][b] >= 0:
return memo[a][b]
if a == 0:
return b
if b == 0:
return a
s = S[a - 1]
t = T[b - 1]
if s == t:
memo[a][b] = f(a-1, b-1, S, T)
return memo[a][b]
if s != t:
steps_change = 1 + f(a-1, b-1, S, T)
steps_insert = 1 + f(a, b-1, S, T)
steps_delete = 1 + f(a-1, b, S, T)
memo[a][b] = min(steps_change, steps_insert, steps_delete)
return memo[a][b]
if __name__ == '__main__':
n, m, S, T = read_data()
print(f(n, m, S, T))