Мне нужно создать цикл со всеми возможными комбинациями карт и мастей без повторения какой-либо карты. Например, из 52 карт, есть только 1 возможная комбинация - 13 червей, 13 булав, 13 бриллиантов, 13 пиков. Как мне сгенерировать это для всех возможных комбинаций?
Я пытался создать циклы:
int[] deck = new int[number];
String[] suits = {"Spades", "Hearts", "Diamonds", "Clubs"};
String[] ranks = {"Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King"};
//initialize the cards
int i1 = 0, i2 = 0, i3 = 0, i4 = 0;
for(i1 = 0; i1< deck.length; i1++) {
for(i2 = i1 + 1; i2< deck.length; i2++) {
for(i3 = i2 + 1; i3< deck.length; i3++) {
for(i4 = i3 + 1; i4< deck.length; i4++) {
int spades = deck[i1];
int hearts = deck[i2];
int dimonds = deck[i3];
int clubs = deck[i4];
int total = spades + hearts + dimonds + clubs;
//String s = spades + hearts + dimonds + clubs;
if (total == number) {
if(i1 < 13)
System.out.println(spades +" "+suits[i1]+" " + hearts + suits[i2] + " " + dimonds + suits[i3] + " " + clubs + suits[i4]);
но я не думаю, что это работает.
import java.util.*;
public class Deck {
public static void main(String[] args){
//initialize everything
Scanner scanner = new Scanner(System.in);
Random random = new Random();
int number = 0;
System.out.print("Enter the sum of the combinations that you want: ");
while (!scanner.hasNextInt()) {
scanner.nextLine();
System.out.print("Enter the sum of the combinations that you want: ");
}
number = scanner.nextInt();
scanner.nextLine();
while (number < 0) {
}
String[] deck = new String[number];
String[] suits = {"Spades", "Hearts", "Diamonds", "Clubs"};
String[] ranks = {"Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King"};
//initialize the cards
for (int i = 0; i <deck.length; i++) {
deck[i] = ranks[i%13] +" of "+ suits[i/13];
System.out.println(deck[i] +"\n");
}
} //end main
} // end class
Введите сумму комбинаций, которые вы хотите: 52 Вот список всех комбинаций: 13 13 13 13 Общее количество комбинаций: 270725 Количество пиков, которое дает сумму 52, равно 1 Вот список всех комбинаций: 12 13 13 13 12 13 13 13, 12 13 13 13, 12 13 13 13, 13 12 13 13, 13 12 13 13, 13 12 13 13, 13 13 12 13, 13 13 12 13 , 13 13 13 12, 13 13 12 13, 13 12 13 13, 13 13 12 13, 12 13 13 13, 13 12 13 13, 13 13 12 13, Общее количество комбинаций: 270725 Количество пиков, которые дают сумму из 51 16