快要新生赛了赶快多做点题
题目大意:找出前一个串串能和后一个串串衔接起来的最长的串串并输出
首先我们拿到这种题不要慌,一看数据范围1000枚举就完了
关键是枚举的思路
其实有那么一点点贪心的意思在里面
就是
我要最长的那个可以衔接的串
是不是我假设最短的那个串就是我要的结果,我再逐个判断,如果不是的话我再进行–操作不就可以了嘛
如果最后长度被我枚举出来是0,那不就是没有答案嘛
嘿嘿好像也就这么回事
上代码
#include<bits/stdc++.h>
using namespace std;
const int maxn=1020;
char a[maxn],b[maxn];
int main()
{
while(scanf("%s%s",a,b)!=EOF)
{
int len1=strlen(a);
int len2=strlen(b);
int ans=min(len1,len2);
int res=0;
for(int i=ans;i>=0;i--)
{
bool flag=true;
for(int j=0;j<i;j++)
{
if(a[len1-i+j]!=b[j])
{
flag=false;
break;
}
}
if(flag)
{
res=i;
break;
}
}
if(res==0)
printf("\"NULL!\"\n");
else
{
for(int i=0;i<res;i++)
printf("%c",b[i]);
printf("\n");
}
}
return 0;
}
多组输入加!=EOF
不然会TLE