1TLE1WA求助
查看原帖
1TLE1WA求助
946515
66xyyd楼主2023/8/4 11:59
#include<iostream>
#include<string>
using namespace std;
int n;
string ss[30];
int yc[30][30];
int vis[30];
int mt(int x,int y){
	bool flag=true;
	int ky=0;
	for(unsigned int k=ss[x].size()-1;k>=0;k--){
		for(unsigned int kx=k;kx<ss[x].size();++kx){
			if(ss[x][kx]!=ss[y][ky++]){
				flag=false;
				break;
			}
		}
		if(flag){
			return ss[x].size()-k;
		}
		ky=0;
		flag=true;
	}
	return 0;
}
char ch;
int ans=-1,maxn=0;
void dfs(int id){
	bool flag=false;
	for(int i=1;i<=n;i++){
		if((vis[i]>=2) || (yc[id][i]==0) || (yc[id][i]==ss[i].size()))	continue;
		maxn+=ss[i].size()-yc[id][i];
		++vis[i];
		flag=true;
		dfs(i);
		maxn-=ss[i].size()-yc[id][i];
		--vis[i];
	}
	if(flag==false){
		ans=max(ans,maxn);
	}
}
int main(){
	cin >> n;
	for(int i=1;i<=n;i++){
		cin >> ss[i];
	}
	cin >> ch;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			yc[i][j]=mt(i,j);
		}
	}
	for(int i=1;i<=n;i++){
		if(ss[i][0]==ch){
			++vis[i];
			maxn=ss[i].size();
			dfs(i);
			vis[i]=0;
		}
	}
	cout << ans;
	return 0;
}

最开始的代码全WA,照着第一篇题解改后还是1TLE1WA,是哪里出了问题?(在下午回复,现在去吃午饭)

2023/8/4 11:59
加载中...