2010-02-04 2 views
0

J'ai un jeu de cartes standard et j'en ai retiré quelques-unes, parmi les cartes restantes, je veux calculer toutes les combinaisons possibles de deux cartes. Par exemple avec 47 cartes il y a 47 choisir 2 combinaisons. Quelqu'un peut-il penser à un moyen efficace de faire cette autre queobtenir toutes les deux combinaisons de cartes du sous-ensemble du jeu standard

foreach(card){ 
    combinations.add(card, card +1) 
} 

Merci

Répondre

3
for(int i=0; i<47; i++) { 
    for(int j=i+1; j<47; j++) { 
    combinations.add(i, j); 
    } 
} 

Ceci est la façon la plus efficace, car il passe par chaque paire une seule fois.

Si vous voulez simplement le numéro de combinaisons de deux paires, voir here.

1

On this site il existe quelques algorithmes résolvant des problèmes combinatoires. Cherchez une classe appelée

class ChoiceIterable<T> implements Iterable<T[]> 
1

Si tout ce que vous avez besoin est juste deux sous-ensembles de cartes (par opposition à un nombre variable), vous pouvez facilement le faire avec deux boucles imbriquées pour.

for(i=0;i<cards.length;i++){ 
    for(j=i+1;j<cards.length;j++){ 
     combinations.add(cards[i],cards[j]); 
    } 
} 
Questions connexes