我正在寫的程序:Ç遞歸函數來找到最小
例如輸入是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個可能的組合(並加上左右乘積):
A (B (C D))
A ((B C) D)
(A B) (C D)
(A (B C)) D
((A B) C) D
A (B (C D))
目標是找到最小的總和!有兩種解決方法,一種是巧妙的算法,或者對每個組合使用遞歸,然後選擇最小的一種。任何人都可以給我一個提示如何寫這種遞歸,從哪裏開始寫作(或者一些聰明的算法)。 TNX
我不明白爲什麼有五種組合。您可以刪除除最終元素以外的所有元素,並且可以按任意順序完成刪除操作。對於包含5個元素的列表,這會使(5-2)! = 6個組合。 (他們是:(2,3,4),(2,4,3),(3,2,4),(3,4,2),(4,2,3),(4,3,2) )。在你的例子中,你永遠不會配對1和2,因爲它們之間沒有任何東西可以刪除! –
可否請你把你的例子中的操作'A(B(CD))' – MOHAMED
按遞增順序對列表進行排序,並繼續刪除位於第2位的元素 - 從左邊開始 - 2,3,4,按照你的順序。總和不會比這低。 – ashley