2017-07-07 5 views
-2

私が持っている問題は、設定された数のサイコロと、設定された目標値から計算することです。 1つのダイスを再使用することなく、できるだけ多くの回数に達することができます。明確にするためJava - 同じ目標値に達するサイコロロールの組み合わせ

は、ここでの例である: 6サイコロは値を保持し、使用されている:1、1、1、2、4、4、およびIが到達したい目標は5

ある

5を得るために、私は異なる方法でダイスを組み合わせることができます。たとえば、1 + 1 + 1 + 2は5、さらには4 + 1です。しかし、私が望むのは、可能な限り多くのサイコロを組み合わせて、できる限り何度でも目標値に到達できるようにすることです。その場合、私は4 + 1と4 + 1の組み合わせで目標値に2回到達します。

これをプログラムで実行することは困難ですが、どのような提案も非常に感謝しています。

答えて

2

基本的なアルゴリズムは、存在するかどうかを判断することです。総和が目標よりも小さい場合、継続する。他の賢者は結果を返しません。あなたがターゲットをヒットした場合、seqを返します。 これは再帰的に行うことができます。それぞれの組み合わせに対して、サイコロの対価をトグルして、目標値に達するかまたは通過するまで続行します。順序は2^nになります。

関連する問題