数学とプログラミングの問題がありました。
与えられた文字のセット{1,2,3,4,5,6,7,8,9,+,-,*,/}
. 次に、一連の文字を使用して、配列内の文字をランダムに生成10
(または と言います) します。その後、この文字配列と 1 文字「=」を使用して、方程式の可能性をすべて見つける必要があります。N
[1,+,1,∗,3,5,7,8,1]
したがって、この場合、次 の [1,+,1,∗,3,5,7,8,1]
式のように1*1=1
なります。3+5=8
7+1=8
15=8+7
15+3=18
複数桁の操作を形成できます。15+3=18
私の質問は、プログラムを使用してすべての方程式を生成しようとしているということです。どのような種類のアルゴリズムがそうできるか、いくつかのアイデアを教えていただけますか? または任意の方法でそれを行いますか?
私の現在のアプローチ:
私のアプローチは十分に速くありません。つまり、最小の方程式には3つの数値と1つの演算子が必要です。と
- 生成された配列から 4 つのメンバーをランダムに選択することから始めます。これらの 4 つのメンバーに 1 つのオペレーターがいる場合、
- 次に、「=」を追加します
- 可能なすべての注文を形成します。たとえば 1,1,2,+ 、 i は 112+= 、 121+= 、 1=12+ .... すべてをループします。と
- 次に、メンバーを5人に増やしてループします...
- 生成された配列の長さまでそれを行います