/*
최장 공통 부분 수열
*/
#include <stdio.h>
#include <string>
#include <iostream>
#define MAX 1001
using namespace std;
int T;
int arr[MAX][MAX] = { 0, };
char str1[1001], str2[1001];
void init()
{
for (int i = 0; i < MAX; i++)
for (int j = 0; j < MAX; j++)
arr[i][j] = 0;
}
int lcs(){
int i, j;
for (i = 1; str1[i-1] != '\0'; i++){
for (j = 1; str2[j - 1] != '\0'; j++){
if (str1[i-1] == str2[j-1])
arr[i][j] = arr[i - 1][j - 1] + 1;
else
arr[i][j] = arr[i][j - 1] > arr[i - 1][j] ? arr[i][j - 1] : arr[i - 1][j];
}
}
return arr[i-1][j-1];
}
int main()
{
int ans;
scanf("%d", &T);
for (int tc = 1; tc <= T; tc++){
cin >> str1 >> str2;
//cout << str1 << str2 << endl;
init();
ans = lcs();
printf("#%d %d\n", tc, ans);
}
return 0;
}
'이것저것' 카테고리의 다른 글
SW 2477 차량 정비소 문제 (0) | 2018.04.12 |
---|---|
SW 4013 특이한 자석 소스코드 (0) | 2018.04.08 |
백준 2178 미로탐색 (0) | 2018.04.01 |
SW 4050 재광이의 대량 할인 [D4] (0) | 2018.03.30 |
SW 4047 영준이의 카드 카운팅 D3 (C++) (0) | 2018.03.29 |
댓글