Chapter 3 : HARD Problem
E : LCS
Diff : Hard(7)
Code :
#include <bits/stdc++.h>
using namespace std;
int LCS(string a, string b) {
int f[a.length()+1][b.length()+1];
for (int i=0;i<=a.length();i++) {
for (int j=0;j<=b.length();j++) {
if (i==0||j==0) f[i][j] = 0;
else if (a[i-1]==b[j-1]) f[i][j] = f[i-1][j-1] + 1;
else f[i][j] = max(f[i-1][j], f[i][j-1]);
}
}
return f[a.length()][b.length()];
}
int main() {
string a, b;
while(cin >> a >> b) cout << LCS(a, b) << endl;
return 0;
}
Comment :
Before : WHAT THE **
After : OH, a friendly DP.