5最長共通文字列(100)
二つの文字列が与えられ、B、文字の文字列におけるk前のチャンスを変更するので、最長共通部分は、二つの最も長い文字列を変更していること。それぞれの変更は、文字列B内の任意の位置に任意の文字列を変更し、選択することができます。
入力フォーマット:
最初の行は、正の整数kを含みます。
2行目と3行目、それぞれの入力文字列A、B。(各文字列の長さは500を超えません)
出力フォーマット:
出力は、修正二つの文字列の最長共通部分の長さを表す整数です。
サンプル入力:
5
AAAAA
BBBBB
出力例:
5
容認されました
#include <stdio.h>
#include <string.h>
int main()
{
int k,i,j,len1,len2,t1,t2,sum,time,max=-1;
char s1[505],s2[505];
scanf("%d",&k);
scanf("%s",&s1);
scanf("%s",&s2);
len1=strlen(s1);
len2=strlen(s2);
for(i=0;i<len1;i++)
for(j=0;j<len2;j++)
{
t1=i;
t2=j;
sum=0;
time=k;
while(t1<len1&&t2<len2)
{
while(t1<len1&&t2<len2&&s1[t1]==s2[t2])
{
t1++;
t2++;
sum++;
}
if(time>0)
{
t1++;
t2++;
sum++;
time--;
}
else
break;
}
if(sum>max)
max=sum;
}
printf("%d",max);
return 0;
}
[0]、B [0]が最大と多分最初の息子の最初の文字列をを見つけることが検索、ヘッドであり、[0]、B [1] ...そして、[1]、B [0] ..そう、和の最大値は、すべての息子文字列の最大値です。