Skip to content

Commit baed4ab

Browse files
authored
Tìm chuỗi
1 parent 1d87f1a commit baed4ab

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
#include <iostream>
2+
#include <string>
3+
#include <algorithm>
4+
using namespace std;
5+
6+
string L[100][100][100];
7+
string s1, s2, s3;
8+
int len1, len2, len3;
9+
10+
string find(string a, string b) {
11+
if (a.size() > b.size()) return a;
12+
if (b.size() > a.size()) return b;
13+
14+
for (int i = 0; i < a.size(); i++) {
15+
if (a[i] > b[i]) return a;
16+
else if (a[i] < b[i]) return b;
17+
}
18+
19+
return a;
20+
}
21+
22+
int main() {
23+
cin.tie(0) -> sync_with_stdio(0);
24+
cin >> s1 >> s2 >> s3;
25+
len1 = s1.size();
26+
len2 = s2.size();
27+
len3 = s3.size();
28+
s1 = ' ' + s1;
29+
s2 = ' ' + s2;
30+
s3 = ' ' + s3;
31+
32+
for (int i = 0; i <= len1; i++)
33+
for (int j = 0; j <= len2; j++)
34+
for (int k = 0; k <= len3; k++)
35+
if (i == 0 || j == 0 || k == 0)
36+
L[i][j][k] = "";
37+
38+
for (int i = 1; i <= len1; i++)
39+
for (int j = 1; j <= len2; j++)
40+
for (int k = 1; k <= len3; k++)
41+
if (s1[i] == s2[j] && s1[i] == s3[k])
42+
L[i][j][k] = L[i - 1][j - 1][k - 1] + s1[i];
43+
else
44+
L[i][j][k] = find(L[i - 1][j][k], find(L[i][j - 1][k], L[i][j][k - 1]));
45+
46+
cout << L[len1][len2][len3];
47+
return 0;
48+
}

0 commit comments

Comments
 (0)