使用单个6面骰子,计算达到一定数量的可能方式

时间:2017-03-29 14:37:50

标签: java dynamic-programming dice

我有以下Java任务。在棋盘游戏中,我可以掷出6面骰子并向前移动相同数量的空间。如果目标是远离起点的“n”个空格,我该如何实现一个程序来计算所有可能的方法来准确到达" n"?我挤压了我的头,但我无法找到解决方案,我已经搜索了网,但没有什么是我想要的。我知道这并不难,我无法找到正确的方法。

提前致谢。

1 个答案:

答案 0 :(得分:2)

有多种方法可以做到这一点,所以我要保持它的通用性。 确定所有可能的排列,存储值。生成一个卷,获得总数。筛选与总数匹配的排列。

class Roll {
    int first;
    int second;
    int total;

    public Roll(int first, int second) {
        this.first = first;
        this.second = second;
        this.total = first + second;
     }

 List<Roll> permutations = new ArrayList<>();
 for (int ii = 1; ii < 7; ii++)
     for (int jj = 1; jj < 7; jj++)
         permutations.add(new Roll(ii,jj);

 roll the dice, determine the total;
 now loop through the permutations to find the 
   total matching the roll total. These are your combinations. 
   This solution doesn't handle duplicate rolls. For example 1,6 and 6,1;