2017-07-07 86 views
-2

我遇到的问题是从一定数量的骰子和设定的目标值进行计算,骰子的最佳组合是什么,使得最大的目标值可以达到尽可能多的次数,而不用重新使用单个骰子。Java - 骰子滚动组合,达到相同的目标值

为了澄清,这里是一个例子: 6骰子被使用时,保持的值:1,1,1,2,4,4和目标,我想达到被5.

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

以编程方式做到这一点很困难,但任何建议都非常感谢。

回答

2

基本算法是考虑存在或不存在的任何骰子。如果总和小于一个目标,则继续。其他明智的回报没有结果。如果你击中目标,则返回seq。 你可以递归地做到这一点,每个组合切换骰子的考虑并继续,直到达到/传递目标值。订单将是2^n。