получить каждые две комбинации карт из подмножества стандартной колоды - PullRequest
0 голосов
/ 04 февраля 2010

У меня есть стандартная колода карт, а затем я удалил несколько, из оставшихся карт я хочу рассчитать все возможные комбинации двух карт. Например, с 47 картами 47 выбирают 2 комбинации. Может кто-нибудь придумать эффективный способ сделать это, кроме

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

Спасибо

Ответы [ 3 ]

3 голосов
/ 04 февраля 2010
for(int i=0; i<47; i++) {
  for(int j=i+1; j<47; j++) {
     combinations.add(i, j);
  }
}

Это наиболее эффективный способ, поскольку он проходит каждую пару только один раз.

Если вы просто хотите число двухпарных комбинаций, см. здесь .

1 голос
/ 04 февраля 2010

Если вам нужно всего лишь два подмножества карт (в отличие от переменного числа), вы можете легко сделать это с помощью двух вложенных циклов for.

for(i=0;i<cards.length;i++){
   for(j=i+1;j<cards.length;j++){
      combinations.add(cards[i],cards[j]);
   }
}
1 голос
/ 04 февраля 2010

На этом сайте есть несколько алгоритмов решения комбинаторных задач. Ищите класс под названием

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