在代码中,我使用了
ns=ser+s[i];
语句,发现输出错误的 choku_dai_dai。
但是,当我使用
string ns=ser+s[i];
语句,输出了我想要的答案 choku__dai。
完整代码:
#include<bits/stdc++.h>
using namespace std;
const int N=10;
string s[N],t,ns,uline;
int n,m;
bool use[N];
set<string>mp;
bool dfs(string ser,int stp){
if(stp>n){
if((int)ser.size()>=3&&(int)ser.size()<=16){
if(mp.find(ser)==mp.end()){
cout<<ser;
return 1;
}
}
return 0;
}
for(int i=1;i<=n;i++)if(!use[i]){
use[i]=1;
ns=ser+s[i];
if(stp==n){
if(dfs(ns,stp+1))return 1;
}else for(;;){
ns+="_";
if(ns.size()>16)break;
if(dfs(ns,stp+1))return 1;
}
use[i]=0;
}
return 0;
}
signed main(){
cin>>n>>m;
for(int i=1;i<=n;i++){cin>>s[i];}
for(int i=1;i<=m;i++){cin>>t;mp.insert(t);}
if(!dfs("",1))cout<<"-1";
return 0;
}
样例:
2 2
choku
dai
chokudai
choku_dai