纯深搜找到所有的排列,比较是否和目标字符串相同,相同就返回true
#include<bits/stdc++.h>
using namespace std;
string str;
string p;
string en="Baidu";
int vis[8];
int dfs(int dep){
if(dep==5){
if(p==en) return 1;
return 0;
}
for(int i=0;i<5;i++){
if(!vis[i]){
vis[i]=1;
p[dep]=str[i];
if(dfs(dep+1)) return 1;
vis[i]=0;
}
}
return 0;
}
int main(){
int t;
cin>>t;
while(t--){
memset(vis,0,sizeof(vis));
p.clear();
p.resize(5);
cin>>str;
if(str.length()!=5){
cout<<"No"<<endl;
continue;
}
if(dfs(0)){
// cout<<p<<endl;
cout<<"Yes"<<endl;
}
else cout<<"No"<<endl;
}
return 0;
}