首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

24 點遊戲窮舉解法:四數運算組合求 24

     編輯:關於C語言

遊戲規則

從 1~13(A=1)中抽 4 張牌,使用 + - × ÷ 及括號,每張牌用一次,算出 24。

窮舉策略

  1. 4 個數字全排列:4! = 24 種順序。
  2. 3 個運算符位置,每位 4 種運算符:4³ = 64 種。
  3. 5 種合法括號結構(二元樹形態)。
  4. 總組合:24 × 64 × 5 = 7680 種,極小,窮舉可行。

五種括號結構

1. ((a ? b) ? c) ? d
2. (a ? (b ? c)) ? d
3. (a ? b) ? (c ? d)
4. a ? ((b ? c) ? d)
5. a ? (b ? (c ? d))

核心判斷邏輯

對每種結構,依序計算中間結果,最後判斷 fabs(result - 24) < 1e-6。

完整程式碼片段

// 預先列舉 24 種排列索引
int g_fourlist[24][4] = { {0,1,2,3}, {0,1,3,2}, ... };

// 運算符編碼:0=+, 1=-, 2=*, 3=/
// 建構運算式字串同步輸出
bool _can24(double a, double b, double c, double d, char *expr) {
    // 遍歷 5 種結構、64 種運算符組合
    // 計算並檢查是否為 24
    // 成功時複製運算式到 expr 並返回 true
}

bool Can24(int four[4]) {
    // 遍歷 24 種排列呼叫 _can24
}

程式可輸出所有合法運算式,如:2+4+6+12=24、12/(4/(6+2))=24 等。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved