經典二十四點程式遊戲

2021-10-07 03:53:49 字數 2465 閱讀 2403

經典二十四點程式演算法

#include

"stdio.h"

// 輸入輸出定義

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)

// 兩個浮點數是否近似相等

void

d24(

int v0,

int v1,

int v2,

int v3)

// 窮舉法求24點

;// +:0 -:1 *:2 /:3

int v[4]

;// 輸入四整數

v[0]

=v0; v[1]

=v1;

v[2]

=v2; v[3]

=v3;

//-----------四重迴圈開始窮舉四個數字的位置: 4!=24 種--------------------------

int count=0;

// 計數成功次數

for(

int i1=

0;i1<

4;i1++

)for

(int i2=

0;i2<

4;i2++

)// 四重迴圈對四個數窮舉

if(i2!=i1)

for(

int i3=

0;i3<

4;i3++)if

(i3!=i2 && i3!=i1)

for(

int i4=

0;i4<

4;i4++)if

(i4!=i3 && i4!=i2 && i4!=i1)

// 第2種情況(a 。b)。(c。 d) 開始計算 :

t1=cal(v[i1]

,v[i2]

,f1)

; t2=

cal(v[i3]

,v[i4]

,f3)

; t3=

cal(t1,t2,f2);if

(isequal

(t3,24)

)// 運算後是否為24

// 第3種情況 (a。(b。c))。d 開始計算 :

t1=cal(v[i2]

,v[i3]

,f2)

; t2=

cal(v[i1]

,t1,f1)

; t3=

cal(t2,v[i4]

,f3);if

(isequal

(t3,24)

)// 運算後是否為24

// 第4種情況 a。((b。c)。d ) 開始計算:

t1=cal(v[i2]

,v[i3]

,f2)

; t2=

cal(t1,v[i4]

,f3)

; t3=

cal(v[i1]

,t2,f1);if

(isequal

(t3,24)

)// 運算後是否為24

// 第5種情況 a。(b。(c。d)) 開始計算:

t1=cal(v[i3]

,v[i4]

,f3)

; t2=

cal(v[i2]

,t1,f2)

; t3=

cal(v[i1]

,t2,f1);if

(isequal

(t3,24)

)// 運算後是否為24}}

//-------------- 窮舉結束: 共 24*64*5=7680 種表示式 ---------------------------

if(count==0)

printf

("\\n%d,%d,%d,%d 不能算出24."

,v0,v1,v2,v3)

;else

printf

("\\n共找到算式 %d 條."

,count);}

void

main()

C Builder構建算二十四點小遊戲

所謂算二十四點可能是不少讀者朋友童年喜歡玩的撲克遊戲之一,玩法是 把一副撲克牌從a到10選出來均分成兩份,兩個小朋友各持乙份即可開始遊戲,每人隨機抽兩張出來組成四張牌,把這四張牌加減乘除湊成結果為二十四,先算出來的一方贏得對方的兩張牌,進行下一輪,如果都沒計算出來為和局,直到把對方所有的撲克牌全部繳...

C Builder構建算二十四點小遊戲

所謂算二十四點可能是不少讀者朋友童年喜歡玩的撲克遊戲之一,玩法是 把一副撲克牌從a到10選出來均分成兩份,兩個小朋友各持乙份即可開始遊戲,每人隨機抽兩張出來組成四張牌,把這四張牌加減乘除湊成結果為二十四,先算出來的一方贏得對方的兩張牌,進行下一輪,如果都沒計算出來為和局,直到把對方所有的撲克牌全部繳...

C Builder構建算二十四點小遊戲

所謂算二十四點可能是不少讀者朋友童年喜歡玩的撲克遊戲之一,玩法是 把一副撲克牌從a到10選出來均分成兩份,兩個小朋友各持乙份即可開始遊戲,每人隨機抽兩張出來組成四張牌,把這四張牌加減乘除湊成結果為二十四,先算出來的一方贏得對方的兩張牌,進行下一輪,如果都沒計算出來為和局,直到把對方所有的撲克牌全部繳...