fork download
  1. #include <stdio.h>
  2.  
  3.  
  4. void print(const int *v, const int size)
  5. {
  6. if (v != 0) {
  7. for (int i = 0; i < size; i++) {
  8. printf("%c", i ? ',':'{');
  9. printf("%d", v[i] );
  10. }
  11. printf("}\n");
  12. }
  13. } // print
  14.  
  15.  
  16. void permute(int *v, const int start, const int n)
  17. {
  18. if (start == n-1) {
  19. print(v, n);
  20. }
  21. else {
  22. for (int i = start; i < n; i++) {
  23. int tmp = v[i];
  24.  
  25. v[i] = v[start];
  26. v[start] = tmp;
  27. permute(v, start+1, n);
  28. v[start] = v[i];
  29. v[i] = tmp;
  30. }
  31. }
  32. }
  33.  
  34.  
  35. int main(void)
  36. {
  37. int v[] = {1, 2, 3};
  38. permute(v, 0, sizeof(v)/sizeof(int));
  39. }
  40.  
Success #stdin #stdout 0s 2292KB
stdin
Standard input is empty
stdout
{1,2,3}
{1,3,2}
{2,1,3}
{2,3,1}
{3,2,1}
{3,1,2}