我正在编写一个程序:
例如输入是 5 (它不仅可以是 5 )数字,我读取数组中的数据:1, 2, 3, 4, 5
。我可以从这个数组中选择一些元素(不是第一个或最后一个),例如 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
删除元素的顺序有 6 种可能的组合(并将左右乘法添加到 sum ):
A (B (C D))
A ((B C) D)
(A B) (C D)
(A (B C)) D
((A B) C) D
A (B (C D))
目标是找到最小的总和!有两种解决方法,一些聪明的算法或对每个组合使用递归,然后选择最小的一个。谁能给我一个提示如何编写这样的递归,从哪里开始编写(或者可能是一些聪明的算法)。肿瘤坏死因子