fork download
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. #define TEST 1
  5.  
  6. void permute(int *s, int start, int end);
  7. void swap(int *s, int start, int end);
  8. void startTesting();
  9.  
  10. int main(void) {
  11. #ifdef TEST
  12. startTesting();
  13. #endif
  14.  
  15. return 0;
  16. }
  17.  
  18. void swap(int *s, int start, int end) {
  19. int temp = s[start];
  20. s[start] = s[end];
  21. s[end] = temp;
  22. }
  23.  
  24. void permute(int *s, int start, int end)
  25. {
  26. int i = 0;
  27. int j = 0;
  28.  
  29. if (start == end) {
  30. for (i = 0; i < 4; i++) {
  31. printf("%d ", s[i]);
  32. }
  33. printf("\n");
  34. } else {
  35. for (j = start; j <= end; j++) {
  36. swap(s, start, j);
  37. permute(s, start + 1, end);
  38. swap(s, start, j);
  39. }
  40. }
  41. }
  42.  
  43. void test1()
  44. {
  45. int s[] = {1, 2, 3, 4};
  46. int i = 0;
  47.  
  48. printf("permute \n");
  49. for (i = 0; i < 4; i++) {
  50. printf("%d ", s[i]);
  51. }
  52. printf("\n");
  53.  
  54. permute(s, 0, 3);
  55. printf("\n");
  56. }
  57.  
  58. void startTesting()
  59. {
  60. test1();
  61. }
  62.  
Success #stdin #stdout 0s 2248KB
stdin
Standard input is empty
stdout
permute 
1 2 3 4 
1 2 3 4 
1 2 4 3 
1 3 2 4 
1 3 4 2 
1 4 3 2 
1 4 2 3 
2 1 3 4 
2 1 4 3 
2 3 1 4 
2 3 4 1 
2 4 3 1 
2 4 1 3 
3 2 1 4 
3 2 4 1 
3 1 2 4 
3 1 4 2 
3 4 1 2 
3 4 2 1 
4 2 3 1 
4 2 1 3 
4 3 2 1 
4 3 1 2 
4 1 3 2 
4 1 2 3