使用者輸入 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”。 範例
分析 此題依據運算元之排列組合,計有 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 若要走演算法產生排列,可參考我的教學網站 排列演算法 |