fork download
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <string>
  4.  
  5. void Permute(std::string word) {
  6. std::sort(word.begin(), word.end());
  7. int size = word.size();
  8. while (true) {
  9. std::cout << word << std::endl;
  10. int i = size - 2;
  11. for (; i >= 0; --i) {
  12. if (word[i] < word[i+1])
  13. break;
  14. }
  15. if (i < 0)
  16. break;
  17. int j = size - 1;
  18. for (; ; --j) {
  19. if (word[i] < word[j])
  20. break;
  21. }
  22. std::swap(word[i], word[j]);
  23. std::reverse(word.begin() + i + 1, word.end());
  24. }
  25. }
  26.  
  27. int main(int, char**)
  28. {
  29. Permute("abcd");
  30. std::cout << "----" << std::endl;
  31. std::string s = "abcd";
  32. do
  33. {
  34. std::cout<<s<<std::endl;
  35. } while(std::next_permutation(s.begin(),s.end()));
  36. return 0;
  37. }
  38.  
Success #stdin #stdout 0s 3032KB
stdin
Standard input is empty
stdout
abcd
abdc
acbd
acdb
adbc
adcb
bacd
badc
bcad
bcda
bdac
bdca
cabd
cadb
cbad
cbda
cdab
cdba
dabc
dacb
dbac
dbca
dcab
dcba
----
abcd
abdc
acbd
acdb
adbc
adcb
bacd
badc
bcad
bcda
bdac
bdca
cabd
cadb
cbad
cbda
cdab
cdba
dabc
dacb
dbac
dbca
dcab
dcba