题解
2024-06-21 07:40:07
发布于:上海
17阅读
0回复
0点赞
1、深搜dfs
#include<iostream>
#include<vector>
using namespace std;
int t;
string alpha[8]={"abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
void dfs(vector<int> s,vector<char> v,int step=0){
if(step==t){
for(int i=0;i<v.size();i++)cout<<v[i];
cout<<endl;
return;
}
string tmp=alpha[s[step]-2];
for(int j=0;j<tmp.size();j++){
v.push_back(tmp[j]);
dfs(s,v,step+1);
v.pop_back();
}
}
int main(){
cin>>t;
int k;
long long s=1;
vector<int> v;
vector<char> cl;
for(int i=0;i<t;i++){
cin>>k;
v.push_back(k);
s*=alpha[k-2].size();
}
cout<<s<<endl;
dfs(v,cl);
return 0;
}
2、广搜bfs
#include<iostream>
#include<queue>
#include<string>
using namespace std;
int n,s[10];
string alpha[10]={"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
queue<string>q;
void bfs(){
string tmp="";
for(int i=0;i<alpha[s[0]].size();i++)
q.push({tmp+alpha[s[0]][i]});
while(!q.empty()){
string f=q.front();
q.pop();
if(f.size()==n)cout<<f<<endl;
else{
for(int i=0;i<alpha[s[f.size()]].size();i++)
q.push({f+alpha[s[f.size()]][i]});
}
}
}
int main(){
int t=1;
cin>>n;
for(int i=0;i<n;i++){
cin>>s[i];
t*=alpha[s[i]].size();
}
cout<<t<<endl;
bfs();
return 0;
}
这里空空如也
有帮助,赞一个