#include <iostream> #include <map> #include <cstring> #include <algorithm> using namespace std; #define maxn 7 int n; //str字符串数组用于存储输入字符串 char str[maxn]; //用于实现字符和数字的映射,在这里用于记录键值表示的字符在当前排列中是否曾经出现过,若未出现,则对应值为0 map<char,int> mp; //用于记录当前排列 char p[maxn]; //为p[v]选择合适的字符 void GeneratorP(int v){ //递归边界 if(v==n){ for(int i=0;i<n;i++) cout<<p[i]; cout<<endl; return; } //递归体 for(int i=0;i<n;i++){ if(mp[str[i]]==0){ //这里是p[v],不要写成p[i] p[v]=str[i]; mp[str[i]]=1; GeneratorP(v+1); mp[str[i]]=0; } } } int main() { while(cin>>str){ //求char[]型数组的长度 n=strlen(str); sort(str,str+n); for(int i=0;i<n;i++) mp[str[i]]=0; GeneratorP(0); cout<<"\n"; } return 0; }