最長共通部分列 勉強 c++ | プログラミング初心者

プログラミング初心者

プログラミング初心者のメモ

#include< algorithm >
#include< iostream >
using namespace std;
char s[100], t[100];
int p, q, dp[100][100];
int main(){
cin >> p >> q;
for (int i = 1; i <= p; i++){
cin >> s[i];
}
for (int j = 1; j <= q; j++){
cin >> t[j];
}
for (int i = 0; i <= p; i++){
for (int j = 0; j <=q; j++){
dp[i][j] = 0;
}
}
for (int i = 0; i < p; i++){
for (int j = 0; j < q; j++){
if (s[i + 1] == t[j + 1]){ dp[i + 1][j + 1] = dp[i][j] + 1; }
else { dp[i + 1][j + 1] = max(dp[i + 1][j], dp[i][j + 1]); }
}
}
cout << dp[p][q];
getchar();
getchar();
}