将LANQIAO中的字母重新排列,可以得到不同的单词,如LANQIAO、AAILNOQ等,注意这7个字母都要被用上,单词不一定有具体的英文意义。
请问,总共能排列如多少个不同的单词。
答案:2520
#include<bits/stdc++.h>
using namespace std;
int ans;
bool st[7];
char dp[7];
char a[7]={'L','A','N','Q','I','A','O'};
set<string>s;
void dfs(int u){
if(u==7){
string t;
t=t+dp[0]+dp[1]+dp[2]+dp[3]+dp[4]+dp[5]+dp[6];//不能写+=
if(!s.count(t)){
cout<<t<<endl;
s.insert(t);
ans++;
}
return;
}
for(int i=0;i<7;i++){
if(!st[i]){
dp[u]=a[i];
st[i]=true;
dfs(u+1);
st[i]=false;
}
}
}
int main(){
dfs(0);
cout<<ans<<endl;
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int ans;
bool st[7];
char dp[7];
char a[7]={'L','A','N','Q','I','A','O'};
int main(){
sort(a,a+7);
do{
ans++;
}while(next_permutation(a,a+7));//自动排除重复的
cout<<ans<<endl;
return 0;
}