알고리즘/백준

9251>LCS

Diademata 2018. 8. 4. 14:38
반응형
https://www.acmicpc.net/problem/9251

문제

LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다.


예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다.


입력

첫째 줄과 둘째 줄에 두 문자열이 주어진다. 문자열은 알파벳 대문자로만 이루어져 있으며, 최대 1000글자로 이루어져 있다.


code>>


#include <iostream>

#include<string>

#include<algorithm>

int memo[1001][1001] = { 0 };

int main()

{

std::ios::ios_base::sync_with_stdio(false);

std::string input1, input2;;

std::cin >> input1 >> input2;

input1 = input1.insert(0, "0");

input2 = input2.insert(0, "0");

for (auto i = 1; i < input1.size(); i++)

{

for (auto ii = 1; ii < input2.size(); ii++)

{

if (input1[i] == input2[ii])

memo[i][ii] = memo[i - 1][ii - 1] + 1;

else

memo[i][ii] = std::max(memo[i][ii - 1], memo[i - 1][ii]);

}

}

printf("%d\n", memo[input1.size() - 1][input2.size() - 1]);

    return 0;

}


반응형

'알고리즘 > 백준' 카테고리의 다른 글

2231>분해합  (0) 2018.09.02
9252>LCS2  (0) 2018.08.20
1920>수 찾기  (0) 2018.06.24
1780>종이의 개수  (0) 2018.06.22
2912>백설공주와 난쟁이  (0) 2018.06.13