窮舉法解24點遊戲

2021-09-08 16:25:53 字數 1156 閱讀 8701

24點遊戲:

輸入:n1,n2,n3,n4

輸出:若能通過+ - * / 和括號混合運算,得到運算結果為24,則輸出乙個對應的運算表示式

窮舉法:

對4個數字全排列有4!=24種排列。

4個數字共需要3個運算子,同乙個運算子可以重複出現,則有4x4x4=64種情況。

對於4個數字而言,共有以下5中加括號的方式:

(a(b(cd))),(a((bc)d)),((ab)(cd)),((a(bc))d),(((ab)c)d)。

所以遍歷的表示式最多有24*64*5=7680種。即使採用逆波蘭表示式,總數不變。

/*24點遊戲演算法,窮舉法:

f(array)

foreach(從陣列中取任意兩個數的組合) }

}    

*/

#include#include

#include

using

namespace

std;

const

double threshold=1e-6

;const

int cardsnumber=4

;const

int resultvalue=24

;double

number[cardsnumber];

string

result[cardsnumber];

bool pointsgame(int

n)

else

return

false

; }

for(int i=0; ii)

for(int j=i+1; jj)

if(a!=0

)

number[i]=a;

number[j]=b;

result[i]=expa;

result[j]=expb;

}return

false;}

intmain()

if(pointsgame(cardsnumber))

cout

<<"

success.

"

fail.

"

}

24點遊戲(窮舉法)

三 include include double cal double a,double b,int op op 0 1 2 3 if b 0.0 分母為0 return 999.0 else return a b bool isequal double d1,double d2 兩個浮點數是否近似...

窮舉法求解24點

看到網上更多的是推薦使用遞迴,但是自己對遞迴一向有點頭疼,所有使用窮舉法求解。vs2005下測試通過。1 2使用窮舉法求解24點。3但是仍然有乙個問題 對於1 2與2 1,因為順序的關係,4系統仍然認為其是兩個解,此問題尚待解決。5author chris 6date 2013 06 18 7 8 ...

24點問題(窮舉法 C )

算24點 point24 問題描述 幾十年前全世界就流行一種數字遊戲,至今仍有人樂此不疲 在中國我們把這種遊戲稱為 算24點 您作為遊戲者將得到4個1 9之間的自然數作為運算元,而您的任務是對這4個運算元進行適當的算術運算,要求運算結果等於24。您可以使用的運算只有 您還可以使用 來改變運算順序。注...