Java - 达到相同目标值的骰子掷骰组合

Java - Dice roll combinations that amount to the same target value

我遇到的问题是根据设定的骰子数量和设定的目标值计算骰子的最佳组合是什么,以便尽可能多地达到目标值,无需重新使用单个骰子。

为了说明,这里有一个例子: 使用了 6 个骰子,分别持有以下值:1、1、1、2、4、4,我想要达到的目标是 5。

为了得到5,我可以用不同的方式组合骰子,比如1+1+1+2是5,还有4+1。但我想要的是能够唯一地组合尽可能多的骰子,尽可能多次达到我的目标值。在这种情况下我必须采用的组合是:4+1 和另一个 4+1,两次达到我的目标值。

尽管事实证明以编程方式执行此操作很困难,但非常感谢任何建议。

基本算法是考虑任何存在或不存在的骰子。如果总和小于目标,则继续。否则 return 没有结果。如果你击中目标 return seq。 您可以递归地执行此操作,为每个组合切换一个骰子的考虑并继续,直到您达到/通过目标值。顺序为 2^n.