2012-05-03 5 views
2

私は4つのint(a、b、c、d)と数学演算子(+、 - 、*、/)を表す3つのStringを持っています。 これらのintとStringから特定の数字(e)を作ることが可能かどうかをチェックしたいと思います。Javaの可能性をすべて試す

例えば、

a + b * c-d == e;

intは1回だけ使用でき、演算子は複数回使用できますが、2つの整数の間に1回だけ使用できます。

誰でも手伝ってもらえますか?

+6

はこの宿題ですか? –

+0

http://ja.wikipedia.org/wiki/Countdown_(game_show)#Numbers_round?というタグを付ける必要があります。 –

+0

私は数学ゲームを一度作りました。ここで、ユーザーは 'e'の式を考えなければなりませんでした。そしてコンピュータは解を与えるでしょう。ここでは、(1)「d - a * c == e」、(2)通常の演算子優先順位、または評価が '(d-a)* c'ですか? –

答えて

3

まず、問題を細かく分割します。

次のように私はそれを打破します:

  1. は4つのint型のすべての順列を計算します。これらは4!(2​​4)あるはずです。 (置換を生成するルックアップ)

  2. 発生する可能性のある3つの操作のすべての組み合わせを計算します。 は3 * 3(9)でなければなりません。 ( の反復で順列を生成するルックアップ)。

  3. ここであなたはintergersの順序と操作の順序を持​​っていて、eを試してみます。 (組み合わせ:intからの1、opsからの1、intからの2番目、opsからの2番目...)これはすべてのint permuationsとすべての演算の組み合わせで行う必要があります。

  4. すべての式(これらのうち216個)がeに等しくない場合、それらを評価した後、解決策はありません。