ここでは、最長共通部分列問題(LCS)について、 「プログラミングコンテストチャレンジブック(第2版)」(通称:蟻本)の p56 を例に、python3 で実装する方法を紹介します。
DP(動的計画法)で実装しています。
# 入力
n = 4
m = 4
s = 'abcd'
t = 'becd'
#DPテーブル(0 で初期化)
dp = [ [0 for i in range(m+1)] for j in range(n+1)]
def solve():
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])
if __name__ == '__main__':
solve()