私はプログラムを書いています:
たとえば、入力は 5 ( 5 だけではない可能性があります) の数字で、配列内のデータを読み取ります: 1, 2, 3, 4, 5
。この配列からいくつかの要素 ( first または last ではない) を選択できます (例: 3)。その後、配列内のこの数値を削除し、sum
(最初は 0 です) に、左から先に掛けた値と最初から先に- を加算します。正しい要素 (2*4
この場合は を意味します)。結果の配列は1, 2, 4, 5
であり、要素の数が 2 になるまで何度も繰り返します (1 and 5
これらの数値を削除できないのとまったく同じです)。
例: (ここで、A、B、C、D は 1 と 2、2 と 3 などの数字のペアです。)
A B C D
1 2 3 4 5
要素を削除する (および sum に左右の乗算を追加する) 順序には、6 つの可能な組み合わせがあります。
A (B (C D))
A ((B C) D)
(A B) (C D)
(A (B C)) D
((A B) C) D
A (B (C D))
目標は最小額を見つけることです!解決には 2 つの方法があります。巧妙なアルゴリズムを使用するか、すべての組み合わせに対して再帰を使用してから最小のものを選択します。そのような再帰を書く方法、どこから書き始めるか (またはおそらくいくつかの巧妙なアルゴリズム) のヒントを教えてください。TNX