1

(+, -, /, * ) それらの演算子とオペランドの数を使用した合計の演算子に問題が あります。

したがって、たとえば、3つのオペランド(1、2、3)と+演算子を使用して、合計6を取得する必要があります。これは、その特定の結果の順列の総数になります。

私はまだアプローチを考えることさえできませんでした。誰かがそれに関して私を助けることができますか?私はJavaを使用しています。

ありがとう

4

1 に答える 1

1

さまざまな方法がありますが、それらすべてを簡単に説明するために、最初に「子供の頃」に読んだ本を読み直す必要があります。このソリューションを試してください。次の目的で使用できるスタックを作成します。

  • 値をプッシュ
  • 最上位の2つの値をポップし、サポートされている算術演算の1つを作成して、結果をプッシュバックします
  • 値をポップ

このようにして、必要な計算を実行できる単純なスタックマシンができます。次に、オペランドと演算子の連結の可能なすべての順列を生成する必要があります。この連結からオペランドを取得すると、それをスタックにプッシュします。あなたがオペレーターを拾うとき-あなたはそれを実行します。演算子を実行している間、スタックに少なくとも2つの要素が含まれていることを確認します。そうでない場合は、この演算子をスキップして、次の可能なオペランドを探す必要があります。連結されたシーケンスにこれ以上オペランドがなく、スタックに要素が1つしかない場合、つまり、現在の計算が完了したことを意味します。したがって、結果を指定された結果と比較し、必要に応じてシーケンスをログに記録します。次に、次の順列に切り替えます

これは間違いなく最適なソリューションではありません。最適化する可能性はたくさんあります。そして、これは最も興味深い部分です:)頑張ってください

于 2012-09-22T04:42:02.897 に答える