codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
#include <stdio.h> char *input_argv[] = { "prog.c", "12", "10", "17", "1", "22" }; // al posto di argv[] int input_argc = sizeof (input_argv) / sizeof (input_argv[0]); // al posto di argc void visualizza (int lista[], int dimensione) { int i; for (i = 0; i < dimensione; i++) { printf ("%i ", lista[i]); } printf ("\n"); } void permuta (int lista[], int a, int z, int dimensione) { int scambio; int k; // Se il segmento di array contiene almeno due elementi, // si procede. if ((z - a) >= 1) { // Inizia un ciclo di scambi tra l'ultimo elemento e // uno degli altri contenuti nel segmento di array. for (k = z; k >= a; k--) { // Scambia i valori. scambio = lista[k]; lista[k] = lista[z]; lista[z] = scambio; // Esegue una chiamata ricorsiva per permutare // un segmento piĆ¹ piccolo dell'array. permuta (lista, a, z - 1, dimensione); // Scambia i valori. scambio = lista[k]; lista[k] = lista[z]; lista[z] = scambio; } } else { // Visualizza l'array. visualizza (lista, dimensione); } } int main (int argc, char *argv[]) { int lista[input_argc - 1]; int i; // Considera gli argomenti come gli elementi // dell'array da permutare. for (i = 1; i < input_argc; i++) { sscanf (input_argv[i], "%i", &lista[i-1]); } // Esegue le permutazioni. permuta (lista, 0, input_argc - 2, input_argc - 1); return 0; }
Private
[
?
]
Run code
Submit