为什么本地正确,提交错误
查看原帖
为什么本地正确,提交错误
239562
yuycESC楼主2023/8/30 09:23

RT

下载了样例来测试,本地和在线IDE结果均正确

#include<bits/stdc++.h>
#define E 1e-6
typedef long long ll;
using namespace std;
string s[25],c;
int vis[25];
int n,ans = 0;
int check(string a,string b){
	int t = a.size() - 1,t1 = 0,cnt = 0;
	while(t >= 0 && a[t] != b[0]) t--;
	while(t < a.size() && t1 < b.size() && a[t] == b[t1]){
		t++,t1++;
		cnt++;
	}
	if(t == a.size()) return cnt;
	else return 0;
} 
void dfs(string a,int len){
	ans = max(ans,len);
	for(int i=0;i<n;i++){
			int chk = check(a,s[i]);
			if(vis[i] < 2 && chk){
//				cout<<a<<' '<<s[i]<<" 拼接后长度:"<<a.size() + s[i].size() - chk<<endl;
				vis[i]++;
				dfs(s[i],len + s[i].size() - chk);
				vis[i]--;
			}	
	}
}
int main(){
//	freopen("C:\\Users\\Administrator\\Desktop\\1.in","r",stdin);
//	freopen("C:\\Users\\Administrator\\Desktop\\1.out","w",stdout);
	memset(vis,0,sizeof(vis));
	cin>>n;
	cin.ignore();
	for(int i=0;i<=n;i++) getline(cin,s[i]);
	vis[n] = 2;
	dfs(s[n],0);
	cout<<ans + 1;
//	fclose(stdin);
//	fclose(stdout);
    return 0;
}
2023/8/30 09:23
加载中...