私は4つのint(a、b、c、d)と数学演算子(+、 - 、*、/)を表す3つのStringを持っています。 これらのintとStringから特定の数字(e)を作ることが可能かどうかをチェックしたいと思います。Javaの可能性をすべて試す
例えば、
a + b * c-d == e;
intは1回だけ使用でき、演算子は複数回使用できますが、2つの整数の間に1回だけ使用できます。
誰でも手伝ってもらえますか?
私は4つのint(a、b、c、d)と数学演算子(+、 - 、*、/)を表す3つのStringを持っています。 これらのintとStringから特定の数字(e)を作ることが可能かどうかをチェックしたいと思います。Javaの可能性をすべて試す
例えば、
a + b * c-d == e;
intは1回だけ使用でき、演算子は複数回使用できますが、2つの整数の間に1回だけ使用できます。
誰でも手伝ってもらえますか?
まず、問題を細かく分割します。
次のように私はそれを打破します:
は4つのint型のすべての順列を計算します。これらは4!(24)あるはずです。 (置換を生成するルックアップ)
発生する可能性のある3つの操作のすべての組み合わせを計算します。 は3 * 3(9)でなければなりません。 ( の反復で順列を生成するルックアップ)。
ここであなたはintergersの順序と操作の順序を持っていて、eを試してみます。 (組み合わせ:intからの1、opsからの1、intからの2番目、opsからの2番目...)これはすべてのint permuationsとすべての演算の組み合わせで行う必要があります。
すべての式(これらのうち216個)がeに等しくない場合、それらを評価した後、解決策はありません。
はこの宿題ですか? –
http://ja.wikipedia.org/wiki/Countdown_(game_show)#Numbers_round?というタグを付ける必要があります。 –
私は数学ゲームを一度作りました。ここで、ユーザーは 'e'の式を考えなければなりませんでした。そしてコンピュータは解を与えるでしょう。ここでは、(1)「d - a * c == e」、(2)通常の演算子優先順位、または評価が '(d-a)* c'ですか? –