为骰子卷生成可能的值

时间:2016-09-23 00:47:34

标签: java

我需要一个能够生成骰子卷的所有可能组合的java程序。骰子的数量和骰子的面数可能会有所不同。 例如。 3个六面骰子的组合可以如下。 111 112 113 114 115 116 121 122 123 124 125 126 ...等等......直到666。 任何帮助??? 某种

public Map generatePossibleNumbers(int face, int numberOfDice){
   // generate numbers and return map
   Map generatedMap=new HashMap();
   return generatedMap;
}

提前致谢

1 个答案:

答案 0 :(得分:1)

我建议您使用Collection而不是Map,因为您不需要存储Key-Value对。

这就是我提出的:

public static void diceRoll(int dice, int numberOfDice) {
    Deque<Integer> list = new ArrayDeque<>(dice);
    diceRoll(dice, numberOfDice, list); // initially we have chosen nothing
}

// Private recursive helper method to implement diceRoll method.
// Adds a 'list' parameter of a list representing
private static void diceRoll(int dice, int numberOfDice, Deque<Integer> list) {
    if (dice == 0) {
        // Base Case: nothing left to roll. Print all of the outcomes.
        System.out.println(list);
    } else {
        // Recursive case: dice >= 1.
        for (int i = 1; i <= numberOfDice; i++) {
            list.addLast(i); // choose
            diceRoll(dice - 1, numberOfDice, list); // explore
            list.removeLast(); // un-choose
        }
    }
}