반응형
문제
LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다.
예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다.
입력
첫째 줄과 둘째 줄에 두 문자열이 주어진다. 문자열은 알파벳 대문자로만 이루어져 있으며, 최대 1000글자로 이루어져 있다.
출력
첫째 줄에 입력으로 주어진 두 문자열의 LCS의 길이를 출력한다.
long long ..
#include <iostream>
#include <vector>
#include<queue>
#include <string.h>
#include <map>
#include<algorithm>
using namespace std;
long long LCS[1001][1001];
int main() {
string str1, str2;
cin >> str1 >> str2;
str1 = '0' + str1;
str2 = '0' + str2;
for (int i = 0; i < str1.size(); i++)
{
for (int j = 0; j < str2.size(); j++)
{
if (!i || !j)
{
continue;
}
if (str1[i] == str2[j])
{
LCS[i][j] = LCS[i - 1][j - 1] + 1;
}
else
{
LCS[i][j] = max(LCS[i - 1][j], LCS[i][j - 1]);
}
}
}
cout << LCS[str1.size() - 1][str2.size() - 1] << endl;
}
반응형
'Algorithm' 카테고리의 다른 글
[동적계획법 1 단계] 백준 1932번 정수 삼각형 (0) | 2020.09.27 |
---|---|
[동적계획법 1 단계] 백준 1912번 연속합 (0) | 2020.09.27 |
[동적계획법 1 단계] 백준 1149번 RGB거리 (0) | 2020.09.26 |
[동적계획법 1 단계] 백준 9461번 파도반 수열 (0) | 2020.09.26 |
[동적계획법 1 단계] 백준 1904번 01타일 (0) | 2020.09.26 |