python練習 最長部分列(LCS)

順位 | 名前 | スコア | 称号 | 打鍵/秒 | 正誤率 | 時間(秒) | 打鍵数 | ミス | 問題 | 日付 |
---|---|---|---|---|---|---|---|---|---|---|
1 | tyoku ty | 2350 | F++ | 2.4 | 94.7% | 145.5 | 362 | 20 | 24 | 2025/03/31 |
2 | ぱぴぷ | 1611 | G++ | 1.7 | 93.2% | 208.5 | 362 | 26 | 24 | 2025/03/31 |
関連タイピング
-
プレイ回数190英語長文90秒
-
プレイ回数20英語長文931打
-
プレイ回数31英語長文312打
-
プレイ回数42英語900打
-
プレイ回数41英語60秒
-
atcoder py kurimatsの型 難
プレイ回数31英語長文493打 -
at coder
プレイ回数94英語長文632打 -
プレイ回数108英語長文324打
問題文
(def dp(S,T):)
def dp(S,T):
(m,n=len(S),len(T))
m,n=len(S),len(T)
(dp=[[0]*(n+1) for _ in range(m+1)])
dp=[[0]*(n+1) for _ in range(m+1)]
(for i in range(1,m+1):)
for i in range(1,m+1):
(for j in range(1,n+1):)
for j in range(1,n+1):
(if s[i-1]==t[j-1]:)
if s[i-1]==t[j-1]:
(dp[i][j]=dp[i-1][j-1]+1)
dp[i][j]=dp[i-1][j-1]+1
(else:)
else:
(dp[i][j]=max(dp[i-1][j],dp[i][j-1]))
dp[i][j]=max(dp[i-1][j],dp[i][j-1])
(lcs="")
lcs=""
(i,j=m,n)
i,j=m,n
(while i>0 and j>0:)
while i>0 and j>0:
(if s[i-1]==t[j-1]:)
if s[i-1]==t[j-1]:
(lcs=s[i-1]+lcs)
lcs=s[i-1]+lcs
(i-=1)
i-=1
(j-=1)
j-=1
(elif dp[i-1][j] > dp[i][j-1]:)
elif dp[i-1][j] > dp[i][j-1]:
(else:)
else:
(j-=1)
j-=1
(return dp[m][n],lcs)
return dp[m][n],lcs
(S=input())
S=input()
(T=input())
T=input()
(length,lcs=dp(S,T))
length,lcs=dp(S,T)
(print(lcs))
print(lcs)