BOJ::9251 LCS
https://www.acmicpc.net/problem/9251
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | #include <stdio.h> #include <cstring> using namespace std; char s1[1000]; char s2[1000]; int map[1001][1001]; int max(int a, int b) { return (a > b) ? a : b; } int main() { scanf("%s %s", &s1, &s2); int n1 = strlen(s1); int n2 = strlen(s2); //LCS 알고리즘 for (int i = 1; i <= n1; i++) { for (int j = 1; j <= n2; j++) { if (s1[i-1] == s2[j-1]) { map[i][j] = map[i - 1][j - 1] + 1; } else { map[i][j] = max(map[i - 1][j], map[i][j - 1]); } } } printf("%d\n", map[n1][n2]); } | cs |
'BOJ::문제풀이' 카테고리의 다른 글
1958 LCS3 (0) | 2018.01.14 |
---|---|
9252 LCS 2 (1) | 2018.01.14 |
14889 스타트와 링크 (0) | 2018.01.14 |
14499 주사위 굴리기 (0) | 2018.01.09 |
11054 가장 긴 바이토닉 수열 (0) | 2018.01.08 |