为什么本地结果正确,洛谷全部爆零(悬赏关注)谢谢0.0
查看原帖
为什么本地结果正确,洛谷全部爆零(悬赏关注)谢谢0.0
771308
newcabbage楼主2023/7/2 20:45
#include<cstdio>
#include<string>
#include<iostream>
#include<algorithm>

using namespace std;

string ch[20];
int vis[20];
int n, ans;

int cheak(string a, string b){
	int c = 0;
	for(int i=1;i<min(a.size(), b.size());i++){
		int flag=1;
		for(int j=0;j<i;j++){
			if(a[j] != b[b.size()-i+j]){
				flag = 0;
			}
		}
		
		if(flag) return i;
	}
	
	return c;
}

void dfs(int x, int len){
	int c;
	ans = max(ans, len);
	
	for(int i=0;i<n;i++){
		if(vis[i] >= 2){
			continue;
		}

		c = cheak(ch[i], ch[x]);
		
		if(c != 0){
			vis[i] += 1;
			dfs(i, len+ch[i].size()-c);
			vis[i] -= 1;
		}
		
	}
}

int main(){
	char ar;
	
	scanf("%d", &n);
	
	for(int i=0;i<n;i++){
		cin >> ch[i];
	}
	
	getchar();
	
	scanf("%c", &ar);
	
	for(int i=0;i<n;i++){
		if(ch[i][0] == ar){
			vis[i]++;
			dfs(i, ch[i].size());
			vis[i]--;
		}
	}
	
	printf("%d", ans);
	
	return 0;
}                   
2023/7/2 20:45
加载中...