竞赛讨论区 > C题为什么不能用dfs
头像
无敌仙尊
发布于 2025-01-27 22:04 浙江
+ 关注

C题为什么不能用dfs

代码是这个,只过了百分之七

#include <bits/stdc++.h>

using namespace std;

int n,m,imin;

string a[100004];

int b[100004];

int find(string s,string t){

int ls=s.length(),lt=t.length(),ll=0;

for(int i=0;i<min(ls,lt);i++){

if(s[i]==t[i]) ll++;

else break;

}

return ll;

}

void dfs(int x,int tip,int sum){

if(sum>=imin) return;

if(tip==n){

imin=min(imin,sum);

return;

}

for(int i = 0 ; i < n ; i ++ ){

if(b[i]) continue;

m=a[x].length()+a[i].length()-2*find(a[x],a[i]);

if(sum+m<imin) {

b[i]=1;

dfs(i,tip+1,sum+m);

b[i]=0;

}

}

}

int main(){

cin>>n>>m;

imin=100000;

for(int i=0;i<n;i++){

cin>>a[i];

}

for(int i=0;i<n;i++){

b[i]=0;

}

cin>>m;

cin>>m;

for(int i=0;i<n;i++){

b[i]=1;

m=a[i].length();

dfs(i,1,m);

b[i]=0;

}

cout<<imin<<endl;

}

全部评论

(0) 回帖
加载中...
话题 回帖

等你来战

查看全部

热门推荐