ottieni ogni combinazione di due carte dal sottoinsieme del mazzo standard
-
18-09-2019 - |
Domanda
Ho un mazzo di carte standard e poi ne ho tolte alcune, dalle carte rimanenti voglio calcolare tutte le possibili combinazioni di due carte.Ad esempio con 47 carte ce ne sono 47 scegli 2 combinazioni.Qualcuno può pensare a un modo efficiente per farlo diverso da
foreach(card){
combinations.add(card, card +1)
}
Grazie
Soluzione
for(int i=0; i<47; i++) {
for(int j=i+1; j<47; j++) {
combinations.add(i, j);
}
}
Questo è il modo più efficiente, in quanto passa attraverso ciascuna coppia sola volta.
Se si desidera solo il numero di combinazioni di due coppie, vedi qui .
Altri suggerimenti
Su questo sito esistono alcuni algoritmi che risolvono problemi combinatori.Cerca una classe chiamata
class ChoiceIterable<T> implements Iterable<T[]>
Se tutto ciò che serve è solo due sottoinsiemi di carte (al contrario di un numero variabile), si potrebbe facilmente fare questo con due cicli for innestati.
for(i=0;i<cards.length;i++){
for(j=i+1;j<cards.length;j++){
combinations.add(cards[i],cards[j]);
}
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow