Algorithm
Algorithm) 최장 공통 부분 수열(Longest Common Subsequence) c++
행복하고 싶은 사람
2023. 1. 31. 19:12
DP 문제를 풀다가 만나게 된 친구입니다
BCD처럼 연속된 것만 찾는다면 최장 공통 문자열
BCDF, BCDE처럼 연속되지 않아도 된다면 최장 공통 부분 수열입니다
최장 공통 문자열의 점화식은 요렇고
if(i==0 || j==0) {
LCS[i][j] = 0;
} else if( A[i] == B[j]) {
LCS[i][j] = LCS[i-1][j-1] + 1;
} else {
LCS[i][j] = 0;
}
최장 공통 부분 수열의 점화식은 이렇습니다
if(i==0 || j==0) {
LCS[i][j] = 0;
} else if( A[i] == B[j]) {
LCS[i][j] = LCS[i-1][j-1] + 1;
} else {
LCS[i][j] = max(LCS[i-1][j], LCS[i][j-1]_;
}
둘의 차이는 꼭 연속되지 않음에서 비롯됩니다
[알고리즘] 그림으로 알아보는 LCS 알고리즘 - Longest Common Substring와 Longest Common Subsequence
LCS는 주로 최장 공통 부분수열(Longest Common Subsequence)을 말합니다만, 최장 공통 문자열(Longest Common Substring)을 말하기도 합니다.
velog.io
이 글 보시면 쉽게 이해할 수 있으실거에요!