File tree Expand file tree Collapse file tree 1 file changed +48
-0
lines changed Expand file tree Collapse file tree 1 file changed +48
-0
lines changed Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments