TLE 求帮助
查看原帖
TLE 求帮助
114445
Luo_diary楼主2020/12/13 17:58
#include<iostream>
#include<string.h>
using namespace std;
bool tried(int l,char str[],int len)
{
	int i,ll=0;
	for(i=0;i<=(len+1)/2-1;i++)
	 if(str[i]!=str[(len+1)/2+i])
	  return false;
	char s[30005];
	for(i=len+1;i<=l-1;i++)
	 s[i-len-1]=str[i],ll++;
	for(i=0;i<=ll/2-1;i++)
	 if(s[i]!=s[ll/2+i])
	  return false;
	return true;
}
long long ans(char str[],int len)
{
	long long answer=0;
	int i;
	for(i=1;i<=len-2;i=i+2)
	{
		if(tried(len,str,i)==true)
		 answer++;
	}
	return answer;
}
int main()
{
	char a[5],str[30005],x[30005];
	int len,n,i,j,k,z,len_x;
	long long answerr=0;
	cin>>n;
	cin.getline(a,3);
	for(z=1;z<=n;z++)
	{ answerr=0;
		cin.getline(str,30002);
		len=strlen(str)-1;
		for(i=0;i<=len-1;i++)
		 for(j=i+1;j<=len;j++)
		 if((j-i+1)%2==0&&(j-i+1)>=4)
		 { len_x=j-i+1;
		     for(k=0;k<=len_x-1;k++)
		 	  x[k]=str[i+k];
		 	  answerr=answerr+ans(x,len_x);
		 }  
		cout<<answerr<<endl;
	}
	return 0;
}
2020/12/13 17:58
加载中...