Pythonで理解する蟻本「2-3 最長共通部分列問題」(p.56)
この記事は「プログラミングコンテストチャレンジブック第2版」(蟻本)の
「2-3 最長共通部分列問題」(p.56)
のコードをPythonで書き直したものとなっています。
入力
入力例
4 4
abcd
becd
解答
MAX_N = 1000
MAX_M = 1000
# 入力
n, m = map(int,input().split())
s = input()
t = input()
dp = [[0] * (MAX_M + 1) for _ in range(MAX_N + 1)] # DPテーブル
for i in range(n):
for j in range(m):
if s[i] == t[j]:
dp[i + 1][j + 1] = dp[i][j] + 1
else:
dp[i + 1][j + 1] = max(dp[i][j + 1], dp[i + 1][j])
print(dp[n][m])