使用者輸入 3 個介於 1~9 之間的整數,請找出可以透過加 +、減 -、乘 *、除 /
及括弧 () 運算子組成的算式中,計算結果為 16 的一種算式排列組合,其中運算子
可以放在任意位置。
舉例來說,若輸入為 "1 3 5" 三個數字,其答案為 16 的算式有:
1+(3*5)=16
1+(5*3)=16
(3*5)+1=16
(5*3)+1=16
請輸出上列答案之中的任一算式,作為問題解答。

輸入說明
輸入 3 個介於 1~9 之間的整數;數字間以空格隔開。

輸出說明
輸出答案為 16 的一個計算式;若無答案為 16 的計算式,則輸出 “None”。

範例
輸入 輸出
1 3 5 (5*3)+1=16
6 8 1 None


分析

此題依據運算元之排列組合,計有 3! = 6 種變化。
運算元少,姑且可以直接設定,不用走演算法路線,花時間找出這六種變化。
只接設定方式很簡單, 假設運算元為 A、B、C ,六種排列方放在 Permut 陣列中則:
Permut(0,0) = A : Permut(0,1) = B : Permut(0,2) = C "表示 ABC
Permut(1,0) = A : Permut(1,1) = C : Permut(1,2) = B "表示 ACB
Permut(2,0) = B : Permut(2,1) = A : Permut(2,2) = C "表示 BAC
Permut(3,0) = B : Permut(3,1) = C : Permut(3,2) = A "表示 BCA
Permut(4,0) = C : Permut(4,1) = A : Permut(4,2) = B "表示 CAB
Permut(5,0) = C : Permut(5,1) = B : Permut(5,2) = A "表示 CBA

若要走演算法產生排列,可參考我的教學網站

排列演算法