24點遊戲的演算法

2021-06-14 11:20:48 字數 2896 閱讀 8285

/** 給定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 思考過程 四個數字,三步運算,二個括號,而這兩個括號的位置有五種不同的情況。也就是說,不論運算符號是什麼,利用括號...