fork download
  1. #include <stdio.h>
  2.  
  3. char *input_argv[] = { "prog.c", "12", "10", "17", "1", "22" }; // al posto di argv[]
  4. int input_argc = sizeof (input_argv) / sizeof (input_argv[0]); // al posto di argc
  5.  
  6. void visualizza (int lista[], int dimensione)
  7. {
  8. int i;
  9.  
  10. for (i = 0; i < dimensione; i++)
  11. {
  12. printf ("%i ", lista[i]);
  13. }
  14. printf ("\n");
  15. }
  16.  
  17. void permuta (int lista[], int a, int z, int dimensione)
  18. {
  19. int scambio;
  20. int k;
  21.  
  22. // Se il segmento di array contiene almeno due elementi,
  23. // si procede.
  24.  
  25. if ((z - a) >= 1)
  26. {
  27. // Inizia un ciclo di scambi tra l'ultimo elemento e
  28. // uno degli altri contenuti nel segmento di array.
  29.  
  30. for (k = z; k >= a; k--)
  31. {
  32. // Scambia i valori.
  33.  
  34. scambio = lista[k];
  35. lista[k] = lista[z];
  36. lista[z] = scambio;
  37.  
  38. // Esegue una chiamata ricorsiva per permutare
  39. // un segmento più piccolo dell'array.
  40.  
  41. permuta (lista, a, z - 1, dimensione);
  42.  
  43. // Scambia i valori.
  44.  
  45. scambio = lista[k];
  46. lista[k] = lista[z];
  47. lista[z] = scambio;
  48. }
  49. }
  50. else
  51. {
  52. // Visualizza l'array.
  53.  
  54. visualizza (lista, dimensione);
  55. }
  56. }
  57.  
  58. int
  59. main (int argc, char *argv[])
  60. {
  61. int lista[input_argc - 1];
  62. int i;
  63.  
  64. // Considera gli argomenti come gli elementi
  65. // dell'array da permutare.
  66.  
  67. for (i = 1; i < input_argc; i++)
  68. {
  69. sscanf (input_argv[i], "%i", &lista[i-1]);
  70. }
  71.  
  72. // Esegue le permutazioni.
  73.  
  74. permuta (lista, 0, input_argc - 2, input_argc - 1);
  75.  
  76. return 0;
  77. }
  78.  
Success #stdin #stdout 0.02s 1720KB
stdin
Standard input is empty
stdout
12 10 17 1 22 
10 12 17 1 22 
12 17 10 1 22 
17 12 10 1 22 
17 10 12 1 22 
10 17 12 1 22 
12 10 1 17 22 
10 12 1 17 22 
12 1 10 17 22 
1 12 10 17 22 
1 10 12 17 22 
10 1 12 17 22 
12 1 17 10 22 
1 12 17 10 22 
12 17 1 10 22 
17 12 1 10 22 
17 1 12 10 22 
1 17 12 10 22 
1 10 17 12 22 
10 1 17 12 22 
1 17 10 12 22 
17 1 10 12 22 
17 10 1 12 22 
10 17 1 12 22 
12 10 17 22 1 
10 12 17 22 1 
12 17 10 22 1 
17 12 10 22 1 
17 10 12 22 1 
10 17 12 22 1 
12 10 22 17 1 
10 12 22 17 1 
12 22 10 17 1 
22 12 10 17 1 
22 10 12 17 1 
10 22 12 17 1 
12 22 17 10 1 
22 12 17 10 1 
12 17 22 10 1 
17 12 22 10 1 
17 22 12 10 1 
22 17 12 10 1 
22 10 17 12 1 
10 22 17 12 1 
22 17 10 12 1 
17 22 10 12 1 
17 10 22 12 1 
10 17 22 12 1 
12 10 22 1 17 
10 12 22 1 17 
12 22 10 1 17 
22 12 10 1 17 
22 10 12 1 17 
10 22 12 1 17 
12 10 1 22 17 
10 12 1 22 17 
12 1 10 22 17 
1 12 10 22 17 
1 10 12 22 17 
10 1 12 22 17 
12 1 22 10 17 
1 12 22 10 17 
12 22 1 10 17 
22 12 1 10 17 
22 1 12 10 17 
1 22 12 10 17 
1 10 22 12 17 
10 1 22 12 17 
1 22 10 12 17 
22 1 10 12 17 
22 10 1 12 17 
10 22 1 12 17 
12 22 17 1 10 
22 12 17 1 10 
12 17 22 1 10 
17 12 22 1 10 
17 22 12 1 10 
22 17 12 1 10 
12 22 1 17 10 
22 12 1 17 10 
12 1 22 17 10 
1 12 22 17 10 
1 22 12 17 10 
22 1 12 17 10 
12 1 17 22 10 
1 12 17 22 10 
12 17 1 22 10 
17 12 1 22 10 
17 1 12 22 10 
1 17 12 22 10 
1 22 17 12 10 
22 1 17 12 10 
1 17 22 12 10 
17 1 22 12 10 
17 22 1 12 10 
22 17 1 12 10 
22 10 17 1 12 
10 22 17 1 12 
22 17 10 1 12 
17 22 10 1 12 
17 10 22 1 12 
10 17 22 1 12 
22 10 1 17 12 
10 22 1 17 12 
22 1 10 17 12 
1 22 10 17 12 
1 10 22 17 12 
10 1 22 17 12 
22 1 17 10 12 
1 22 17 10 12 
22 17 1 10 12 
17 22 1 10 12 
17 1 22 10 12 
1 17 22 10 12 
1 10 17 22 12 
10 1 17 22 12 
1 17 10 22 12 
17 1 10 22 12 
17 10 1 22 12 
10 17 1 22 12