社区讨论

P1278 80分求调

学术版参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@lxflbi4u
此快照首次捕获于
2024/06/15 12:01
2 年前
此快照最后确认于
2024/06/15 15:18
2 年前
查看原帖
CPP
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;
} 

回复

1 条回复,欢迎继续交流。

正在加载回复...