#include <iostream> #include <string> #include <algorithm> using namespace std; const int N = 100; bool visited[N]; char seq[N]; // dfs void permutation(string str,int index){ // 如果递归的深度等于字符串的长度表示已经找到序列了 if(index == str.size()){ for(int i = 0;i < str.size();i ++){ cout << seq[i]; } cout << endl; } // 排序 for(int i = 0;i < str.size();i ++){ if(visited[i]){ continue; } visited[i] = true; seq[index] = str[i]; // 递归下一层,把原端点复位 permutation(str,index + 1); visited[i] = false; } } int main(){ string str; while(cin >> str){ sort(str.begin(),str.end()); permutation(str,0); cout << endl; } return 0; }