題目連結:
題目大意:
輸入有兩列。第一列給定一正整數 m (m ≦ 9),代表數字的個數。第二列給定 m 個整數(皆介於 0 ~ 9 之間),代表給定的數字。
試問這 m 個數字能組出來的兩個數字,其最大乘積為何?
注:如果 m 為偶數,則組出來的兩個數字都必須是 m ÷ 2 位數;反之,如果是奇數則一個是 (m - 1) ÷ 2 位數、另一個是 (m + 1) ÷ 2 位數。
範例輸入:
3
2 2 5
範例輸出:
110
解題思維:
窮舉這 m 個數字取 (m ÷ 2 取整) 個數字的方法即可。因此,每個取法就代表著一個被組出來的數字,因此剩下沒被挑到的就是另一個數字。
因為乘積要盡量大,所以每個方法取出來後,將盡量大的放在高位。例如取到 1 、 4 、 2 ,則應排成 421 ,而不是其他的數字。
最後看哪個取法得出的乘積最大,即是所求。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。