题目描述
王村长生了个大胖儿子需要起英文名字,关键要朗朗上口。他认为有n种音节是好听的,必须都用到一次,那么有哪些排序方式呢?
输入输出格式
输入格式
输入第一行为正整数n,第二行有n个小写字符串各自代表一种音节(无重复),n<=5。
输出格式
输出儿子的小写英文名候选方案,每一行输出一个,按照字典序输出。注意儿子一定姓王。注意行末没有空格。
输入输出样例
输入样例#1:
2
tuo ni
输出样例#1:
nituo wang
tuoni wang
输入样例#2:
3
cha li si
输出样例#2:
chalisi wang
chasili wang
lichasi wang
lisicha wang
sichali wang
silicha wang
代码:
#include <bits/stdc++.h>
using namespace std;
string a[100005];
void dfs(int x,int n,string box[100005],vector<int>& visited){
if(x==n+1){
for(int i=1;i<=n;i++){
cout<<box[i];
}
cout<<" wang"<<endl;
return;
}
for(int i=1;i<=n;i++){
if(visited[i]==0){
box[x]=box[i];
visited[i]=1;
dfs(x+1,n,box,visited);
visited[i]=0;
}
}
}
int main()
{
// freopen("name1.in","r",stdin);
// freopen("name1.out","w",stdout);
int n;
vector<int> fhj;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
fhj.resize(n+1,0);
dfs(1,n,a,fhj);
return 0;
}
求调~