#include
<
stdio.h
>
#include
<
string
.h
>
char
a[
101
],b[
101
],d[
101
];
int
c[
101
][
101
];
int
max(
int
x,
int
y) {
if
(x
>
y)
return
x;
else
return
y;}
int
main(){
int
lena,lenb,i,j,k,m;
while
(scanf(
"
%s%s
"
,a
+
1
,b
+
1
)
!=
EOF) { m
=
0
;memset(d,
0
,
sizeof
(d)); lena
=
strlen(a
+
1
); lenb
=
strlen(b
+
1
);
for
(i
=
0
;i
<=
lena;i
++
) c[
0
][i]
=
0
;
for
(j
=
0
;j
<=
lenb;j
++
) c[j][
0
]
=
0
; k
=
0
;
for
(i
=
1
;i
<=
lena;i
++
)
for
(j
=
1
;j
<=
lenb;j
++
){
if
(a[i]
==
b[j]) { c[i][j]
=
c[i
-
1
][j
-
1
]
+
1
;
if
(c[i][j]
>
m) { d[k]
=
a[i]; k
++
; }}
else
c[i][j]
=
max(c[i
-
1
][j],c[i][j
-
1
]);
if
(c[i][j]
>
m) m
=
c[i][j]; } printf(
"
%d\n
"
,c[lena][lenb]); printf(
"
%s\n
"
,d); }
return
0
;}
转载于:https://www.cnblogs.com/cyiner/archive/2011/05/16/2048203.html
转载请注明原文地址: https://mac.8miu.com/read-58533.html