開啟章節選單
10405 Longest Common Subsequence
解題思路
使用 LCS 算法
程式碼
#include<iostream> using namespace std; int main() { string a,b; while (getline(cin,a) && getline(cin,b)) { int dp[a.length()+1][b.length()+1]; for(int i=0;i<=a.length();i++) dp[i][0]=0; for(int i=0;i<=b.length();i++) dp[0][i]=0; for(int i=1;i<=a.length();i++) for(int j=1;j<=b.length();j++) { if(a[i-1]!=b[j-1]) dp[i][j]=max(max(dp[i][j-1],dp[i-1][j]),dp[i-1][j-1]); else dp[i][j]=dp[i-1][j-1]+1; } cout << dp[a.length()][b.length()] << endl; } }