Domanda

ho un array come seguente

int[] array = new array[n];// n may be 2,3,4

esempio per N = 4

int[] array = new array[4];

array[0] = 2;
array[1] = 4;
array[2] = 6;
array[3] = 8;

Come faccio a calcolare tutte le combinazioni non ripetuto di questo array senza usare LINQ può essere all'interno?

2,4,6,8
2,4,8,6
2,8,6,4
2,6,4,6
8,6,4,2
2,4,6,8
.......
.......
.......

È stato utile?

Altri suggerimenti

Bene, dato che siete alla ricerca di tutte le combinazioni non ripetute, che significa che ci sarà N! tali combinazioni ... (così, nel tuo caso, N! = 4! = 24 tali combinazioni).

Come io sono in mezzo a questo distacco, dommer ha evidenziato una buona implementazione.

Basta essere avvertito che è sta per arrivare veramente lento per grandi valori di N (dato che ci sono N! Permutazioni).

Pensate alle due possibili stati del mondo per vedere se che getta alcuna luce.

1) Non ci sono doppioni nella mia array (cioè. Ogni numero della matrice è unica). In questo caso, il numero di possibili permutazioni sono lì?

2) C'è una sola vittima nella matrice. Così, il numero di permutazioni che si è calcolato nella prima parte, quanti sono solo duplicati

Hmmm, consente di dare un array di tre elementi per semplicità

1,3,5 ha quanti permutazioni?

1,3,5

1,5,3

3,1,5

3,5,1

5,1,3

5,3,1

Quindi sei permutazioni

Ora, cosa succede se cambiamo la lista di dire 1,5,5?

Si arriva

1,5,5

5,1,5

5,5,1

La mia domanda a voi sarebbe, come si può esprimere questa via fattoriali?

Forse provare a scrivere tutte le permutazioni con un array di quattro elementi e vedere se la lampadina si spegne?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top