/** 給定4個數字計算24 */
public class core );
string output = s.getexpression();
for (int i = 0; i < output.length; i++)
}
/** 設定被計算的四個數,由於是陣列,所以具有容錯功能(不為4個數) */
public void setnumbers(double n) else
error = true;
}
public void setnumbers(int n)
} else
error = true;
}
/** 設定每頁顯示的行數 */
// public void setmaxline(int n)
// }
// /** 返回每頁顯示的行數 */
// public int getmaxline()
/** 設定需要得到的結果 */
public void setexpressionresult(double n)
/** 返回所需結果 */
public double expressionresult()
/** 返回符合條件的表示式 */
public string getexpression() else
return new string ;
}
/** cal24(),輸出結果為24的表示式 */
private string calculate(double n) ;
double n1 = new double[3];
double n2 = new double[2];
string resultstring = new string[1024]; // 最多1000組解,暫時未溢位
int count = 0;
boolean isrepeat = false;
for (int t1 = 0; t1 < 6; t1++)
n1 = cal1(n, t1, c1);
n2 = cal2(n1, t2, c2);
double result = cal(n2[0], n2[1], c3);
if ((result - expressionresult) < 0.00000001
&& (expressionresult - result) < 0.00000001)
}
if (c1 == c2 && c2 == c3 && c1 % 3 == 0
&& t1 + t2 != 0)
if (!isrepeat)
}
}
}
}
}
}
if (count == 0)
return new string ;
string resultreturn = new string[count];
system.arraycopy(resultstring, 0, resultreturn, 0, count);
return resultreturn;
}
/** cal1(),將4個數計算一次後返回3個數 */
private double cal1(double n, int t, int c)
return m;
}
/** cal2(),將3個數計算一次後返回2個數 */
private double cal2(double n, int t, int c)
return m;
}
/** cal(),將2個數計算後返回結果 */
private double cal(double n1, double n2, int c)
}
/** calstring(),輸出表示式 */
private string calstring(double n, int t1, int c1, int t2, int c2, int c3)
if ((c2 / 3 > c1 / 3 && (t2 != 2 || c2 / 3 == c3 / 3))
|| ((c3 / 3 > c1 / 3 + c2 / 3) && t2 == 2)
|| (c3 == 1 && c1 / 3 == 0)) // 特定情況下加上乙個括號*****************************
nstring[0] = '(' + nstring[0] + ')';
switch (t2)
if (c3 / 3 > c2 / 3 || (c3 == 2 && nstring[0].indexof('+') >= 0)) // 特定情況下加上乙個括號*****************************
nstring[0] = '(' + nstring[0] + ')';
return calstring2(nstring[0], nstring[1], c3);
}
/** calstring(),根據符號輸出一部運算表示式 */
private string calstring2(string n1, string n2, int c)
}
}
24點遊戲演算法
24點遊戲演算法 現在我們在做乙個 24點的小遊戲,我主要負責演算法部分,前面有章部落格已經講解了加括號的四則表示式的計算演算法,現在要解決就是24點的演算法。54張牌去掉大小王 2張牌,剩餘 52張。任意發1 k之間的4個 張牌 也就是有 1 13 的四個數字 用 鏈結成算式,使得式子的計算結果為...
24點遊戲演算法
24點遊戲演算法 現在我們在做乙個 24點的小遊戲,我主要負責演算法部分,前面有章部落格已經講解了加括號的四則表示式的計算演算法,現在要解決就是24點的演算法。54張牌去掉大小王 2張牌,剩餘 52張。任意發1 k之間的4個 張牌 也就是有 1 13 的四個數字 用 鏈結成算式,使得式子的計算結果為...
24點小遊戲演算法
要求 1 9任意四個數字,利用加減乘除括號五種運算使最終結果等於24 如果能達到要求,列印所有方法 同樣的加減乘除,括號不同位置算兩種不同的方法 若不能達到要求,列印 不能計算達到24 思考過程 四個數字,三步運算,二個括號,而這兩個括號的位置有五種不同的情況。也就是說,不論運算符號是什麼,利用括號...