0分?满分?!
查看原帖
0分?满分?!
688417
Karieciation楼主2023/12/15 22:27
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=25;
string a[N];
int n,vis[N];
ll ans;
void dfs(int k,ll sum){
	string s=a[k];
	vis[k]++;
	for(int p=1;p<s.length();p++){
		bool flag=true;
		for(int i=1;i<=n;i++){
			if(vis[i]>1)
				continue;
			string x=s.substr(s.length()-p,s.length());
			if(x.length()<a[i].length()&&x==a[i].substr(0,p))
				dfs(i,sum+(ll)s.length()-p);
			if(x.length()<a[i].length())
				flag=false;
		}
		if(flag)
			break;
	}
	vis[k]--,ans=max(ans,sum+(ll)s.length());
}
int main(){
	scanf("%d",&n);
	char ch=getchar();
	for(int i=1;i<=n;i++)
		getline(cin,a[i],'\n');
	cin>>ch;
	for(int i=1;i<=n;i++)
		if(a[i][0]==ch)
			dfs(i,0);
	printf("%lld\n",ans);
	return 0;
}

第一个点本地输出15,答案15,交上去WA,估计其他的也是这样给判错的,所以说,该怎么改?

2023/12/15 22:27
加载中...