就暴力枚举所有起点和终点就行了。

我做这题时想的太多了,最简单的暴力枚举起始点却没想到。。。应该先想最简单的方法,层层深入。

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<map>
#include<set>
#include<vector>
#include<algorithm>
#include<stack>
#include<queue>
using namespace std;
#define INF 1000000000
#define eps 1e-8
#define pii pair<int,int>
#define LL long long int
char s[];
int k,ans;
void check(int b,int e)
{
int l=e-b+;
if(l&) return;
else
{
int t=l/;
for(int i=b;i<b+t;i++)
{
if(s[i]==s[t+i]||s[t+i]==)
continue;
else return;
}
ans=max(ans,l);
return;
}
}
int main()
{
//freopen("in7.txt","r",stdin);
//freopen("out.txt","w",stdout);
scanf("%s",s);
scanf("%d",&k);
int len=strlen(s);
int lens=len+k;
ans=;
for(int i=;i<lens-;i++)
{
for(int j=i+;j<=lens-;j++)
{
check(i,j);
}
}
printf("%d\n",ans);
//fclose(stdin);
//fclose(stdout);
return ;
}
05-08 15:40