T1:string
样例就不给了反正水的很,当时我看到50的范围有点小激动,用dfs,然而死递归了(我果然什么都不会)
看题面,我似乎忽略了什么重要的东西,有两个容器,为什么是两个,在看数组中不同的符号也是两个,so~~
我们发现可以让一个容器存储'x',让另一个容器存储'o',于是就可以组成所有序列了
又因为容器只能从左边出来再从右进去,就又有办法了我们可以寻找一段最长的串如下:
他满足在初始串的尾部出现又在目标串的头部出现,而且要尽量的长,再把不匹配的字符数量*2就是答案了(出去进来刚好两次)
PS:这当然不是我独立思考的结果,经过了yg大佬的点拨qwq,而且细节应该很少,只要想到就应该A了
code:
#include<bits/stdc++.h>
using namespace std;
namespace program{
int T,len,Ans;
char s1[1010],s2[1010];
inline bool check(int x){//找最长的匹配串
for(int i=x+1;i<=len;i++)
if(s1[i]!=s2[i-x])
return 0;
return 1;
}
inline void work(){
cin>>T;
while(T--){
scanf("%s%s",s1+1,s2+1);
len=strlen(s1+1);
for(int i=0;i<=len;i++){
if(check(i)){
Ans=i*2;
break;
}
}
cout<<Ans<<'\n';
}
}
}
int main(){
freopen("string.in","r",stdin);
freopen("string.out","w",stdout);
program::work();
return 0;
}