纯深搜找到所有的排列,比较是否和目标字符串相同,相同就返回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;
}