fork download
  1. #include<bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. string s;
  6. int n, visited[11], x[11]; // x[] để lưu hoán vị
  7. vector<string> ans;
  8.  
  9. void btk(int i){ // i có vai trò là vị trí hoán vị đang xét tới
  10. for(int j = 1; j <= n; j++){ // xét các số có thể gán vào vị trí i
  11. if(visited[j] == false){
  12. visited[j] = true;
  13. x[i] = j;
  14. if(i == n){ // đã duyệt hết các vị trí trong hoán vị
  15. string tmp = "";
  16. for(int k = 1; k <= n; k++){
  17. tmp += s[x[k]];
  18. }
  19. ans.push_back(tmp);
  20. }
  21. else btk(i+1);
  22. visited[j] = false;
  23. }
  24. }
  25. }
  26.  
  27. int main(){
  28. cin >> s;
  29. n = s.size();
  30. s = ' ' + s;
  31. btk(1);
  32. sort(ans.begin(), ans.end());
  33. ans.push_back(".");
  34. vector<string> c;
  35. for(int i = 0; i < ans.size()-1; i++){
  36. if(ans[i] != ans[i+1]){
  37. c.push_back(ans[i]);
  38. }
  39. }
  40. cout << c.size() << '\n';
  41. for(int i = 0; i < c.size(); i++){
  42. cout << c[i] << '\n';
  43. }
  44. }
  45.  
Success #stdin #stdout 0s 5320KB
stdin
Standard input is empty
stdout
0