基本原理是窮舉4個整數所有可能的表示式,然後對表示式求值。
表示式的定義: expression = (expression|number) operator (expression|number)
因為能使用的4種運算子 + - * / 都是2元運算子,所以本文中只考慮2元運算子。2元運算子接收兩個引數,輸出計算結果,輸出的結果參與後續的計算。
由上所述,構造所有可能的表示式的演算法如下:
(1) 將4個整數放入陣列中
(2) 在陣列中取兩個數字的排列,共有 p(4,2) 種排列。對每乙個排列,
(2.1) 對 + - * / 每乙個運算子,
(2.1.1) 根據此排列的兩個數字和運算子,計算結果
(2.1.2) 改表陣列:將此排列的兩個數字從陣列中去除掉,將 2.1.1 計算的結果放入陣列中
(2.1.3) 對新的陣列,重複步驟 2
(2.1.4) 恢復陣列:將此排列的兩個數字加入陣列中,將 2.1.1 計算的結果從陣列中去除掉
可見這是乙個遞迴過程。步驟 2 就是遞迴函式。當陣列中只剩下乙個數字的時候,這就是表示式的最終結果,此時遞迴結束。
於是按照這個思想,寫了乙個程式,搜尋出所有可行的方法,【程式基本上屬於拷貝性質】:
python 的算24點程式
rel original file href 文件 201 rel file list href 文件 201.files filelist.xml 今天在網上同學求教 1 5 6 7 用 算出21.自己曾經寫過乙個 但 找不到了 偶知道 24點的程式很多的說 於是到網上搜了一下 是有不少 但是乙個...
算24的java程式續
public long ct string sc system.out.println ct sc sc ysf ysf ys ys sa sc.substring 0,ysf try catch numberformatexception ex switch ys system.out.print...
vijos P1134 算24點 題解
include include include include include using namespace std bool used 5 int a 5 bool mem 1000 double qiku 120 1001 int ans void work double now,int k ...