P1278 80分求调
  • 板块学术版
  • 楼主liweizhe1904
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/6/15 12:00
  • 上次更新2024/6/15 15:18:40
查看原帖
P1278 80分求调
1208356
liweizhe1904楼主2024/6/15 12:00
include<bits/stdc++.h>
using namespace std;
string s[17];
int visited[17],len,n,lenmax,MAX=0;
void dfs(int i){
	//将当前单词纳入接龙中 
	int lens=s[i].length();
	len+=lens;
	visited[i]=1;
	
	int flag=0;
	for(int x=1;x<=n;x++){//遍历所有的单词 
		if(s[i][lens-1]==s[x][0]&&visited[x]==0){
			flag=1;break;
		}
	}
	if(flag==0) {//无法再接新的单词了 
		if(len>lenmax)lenmax=len;
	}
	else{//能接新的单词
		for(int x=1;x<=n;x++){
			if(s[i][lens-1]==s[x][0]&&visited[x]==0){
				dfs(x);
			}
		}
	} 
	visited[i]=0;
	len-=lens;
	return;
}
int main(){
	//freopen("data.in","r",stdin);
	cin>>n;
	for(int i=1;i<=n;i++) cin>>s[i];
	for(int i=1;i<=n;i++){//尝试使用每一个的单词当作接龙游戏的队头 
		dfs(i);
		if(lenmax>MAX)MAX=lenmax;
		memset(visited,0,sizeof(visited));
		len=0;lenmax=0;
	}
	cout<<MAX;
} 
2024/6/15 12:00
加载中...