最相同子列問題(一)
1135 ワード
15を超えない2つの文字列を入力し、2つの文字列の最も長い同じサブ列を出力し、複数ある場合は、最初の文字列の中で相対的に前のサブ列を出力します.
テストサンプル:
a a a b abc cde abcdabcdef bcdefabcd abcdefgh atbcdtdefg abcdefgh bcde aaaaaaaaaa aaaaaaaaab
テストサンプル:
a a a b abc cde abcdabcdef bcdefabcd abcdefgh atbcdtdefg abcdefgh bcde aaaaaaaaaa aaaaaaaaab
#include
#include
using namespace std;
int main()
{
char s1[20], s2[20];
while (cin >> s1 >> s2)
{
for (int length_substr = strlen(s1); length_substr > 0; length_substr--)//
{
char c1[20];
strncpy_s(c1, s1, strlen(s1));
c1[length_substr] = '\0';
for (char *p1 = s1; *(p1 + length_substr - 1) != '\0'; p1++)//
{
char pp1[20];
strncpy_s(pp1, p1, length_substr);
*(pp1 + length_substr) = '\0';
char c2[20];
strncpy_s(c2, s2, strlen(s2));
c2[strlen(c2)] = '\0';
for (char *p2 = c2; *p2 != '\0'; p2++)//
{
char pp2[20];
strncpy_s(pp2, p2, length_substr);
*(pp2 + length_substr) = '\0';
if (strncmp(pp1, pp2, length_substr) == 0)
{
cout << pp1;
goto E;
}
}
}
}
E: cout << endl;
}
return 0;
}