求大佬帮助
查看原帖
求大佬帮助
745442
BensonChen楼主2023/10/10 22:38

我的dfs左看右看也看不出啥问题啊!!! 难绷。。。

#include <bits/stdc++.h>

using namespace std;
int n,maxn=-114514;
string s[20];
bool b[20];
int A[20],size[20];//如果搜到A[i],且A[i]!=0直接返回A[i]

int dfs(int now,int sum){
	if(A[now]!=0)return A[now];
	int maxm=-1;
	sum+=size[now];
	for (int i=1;i<=n;i++){
		if(b[i]==true){
			continue;
		}
		if(s[now][size[i]-1]!=s[i][0])continue;
		if(A[i]!=0){
			maxm=max(maxm,A[i]);
			continue;
		}
		b[i]=true;
		maxm=max(dfs(i,sum),maxm);
		b[i]=false;
	}
	if(maxm==-1){
		return sum;
	}
	return maxm+sum;
}

int main(){
	cin>>n;
	for (int i=1;i<=n;i++){
		cin>>s[i];
		size[i]=s[i].size();
	}
	for (int i=1;i<=n;i++){
		memset(b,false,sizeof(b));
		b[i]=true;
		if(A[i]==0)A[i]=dfs(i,0);
	}
	for (int i=1;i<=n;i++){
		maxn=max(maxn,A[i]);
	}
	cout<<maxn;
	return 0;
}

求大佬指正 我是大大的蒟蒻

2023/10/10 22:38
加载中...