#include <iostream> #include <algorithm> #include <string> #include <string.h> using namespace std; string A, B; int dp[1010][1010]; int Max; int solve(int aIdx, int bIdx) { if(aIdx == A.size() || bIdx == B.size()) { return 0; } if(dp[aIdx][bIdx] != 0) { return dp[aIdx][bIdx]; } if(A[aIdx] == B[bIdx]) { dp[aIdx][bIdx] = solve(aIdx+1, bIdx+1) + 1; } else { dp[aIdx][bIdx] = max(solve(aIdx+1, bIdx), solve(aIdx, bIdx+1)); } return dp[aIdx][bIdx]; } int main(void) { // freopen("B9251_input.txt", "r", stdin); cin >> A >> B; cout << solve(0, 0); return 0; } | cs |
'Baekjoon > DP' 카테고리의 다른 글
[백준 1965] 상자 넣기 (DP) (C/C++) (0) | 2020.03.16 |
---|---|
[백준 9252] LCS 2 (DP) (C/C++) (★★★) (0) | 2020.03.16 |
[백준 2163] 초콜릿 자르기 (DP) (C/C++) (0) | 2020.03.15 |
[백준 1010] 다리 놓기 (DP) (C/C++) (0) | 2020.03.15 |
[백준 1149] RGB 거리 (DP) (C/C++) (★) (0) | 2020.03.15 |