用撲克牌計算24點

2021-10-14 09:56:05 字數 2681 閱讀 4153

[問題描述]

一副撲克牌的每張牌表示乙個數(j、q、k分別表示11、12、13,兩個司令都表示6)。任取4張牌,即得到1-13的數,請新增運算子(規定為加、減、乘、除四種)使之成為表示式。每個數只能參與一次運算,4個數順序可以任意組合,4個運算子任意取3個且可以重複取。運算遵從一定有限級別,可加括號控制,最終使運算結果為24.請輸出一種解決方案的表示式,用括號表示運算優先。如果沒有解決方案,則輸出-1表示無解。

[基本要求]

(1)輸入說明:在一行中給出4個整數,每個整數取值範圍是[1, 13].

(2)輸出說明:輸出一種解決方案的表示式,用括號表示運算優先,如果沒有解決方案,則輸出-1。

(3)測試用例: 輸入 2 3 12 12 輸出 ((3-2)*12)+12

(4)可選要求:輸入採用隨機生成4個整數, 輸出要求輸出該4個整數所有可能的解決方案。

資料結構

使用棧操作,與深度搜尋相結合

typedef int adjmatrix[max_vertex_num][max_vertex_num];

演算法設計思想

設定兩個函式,運用多重迴圈語句實現所有的數字和運算子排列組合的可能,同時不能重複,若重複則continue繼續組合,依次判斷各種組合的運算結果是否滿足24,若滿足則輸出。

測試資料和結果

測試資料:隨機生成四個數

結果:

演算法時間複雜度

void show_24 ( int a ) //對數字順序進行排列組合

時間複雜度:o(nnnn)

int get_24(int i, int j, int k, int t) //對運算子進行排列組合

時間複雜度:o(nn*n)

**如下:

#include

#include

#include

#include

#include

#include

using

namespace std;

char yunsuan[5]

=;double

cal(

double x,

double y,

int yunsuan)

}double

reckon1

(double i,

double j,

double k,

double t,

int a,

int b,

int c)

//¼æëãä£ê½

double

reckon2

(double i,

double j,

double k,

double t,

int a,

int b,

int c)

double

reckon3

(double i,

double j,

double k,

double t,

int a,

int b,

int c)

double

reckon4

(double i,

double j,

double k,

double t,

int a,

int b,

int c)

double

reckon5

(double i,

double j,

double k,

double t,

int a,

int b,

int c)

//對運算子進行排列組合

intget_24

(int i,

int j,

int k,

int t)if(

reckon2

(i,j,k,t,a,b,c)

==24)if

(reckon3

(i,j,k,t,a,b,c)

==24)if

(reckon4

(i,j,k,t,a,b,c)

==24)if

(reckon5

(i,j,k,t,a,b,c)

==24)}

}}return flag;

}//對數字順序進行排列組合

void show_24 (

int a)

if( flag ==1)

continue;}

if( flag ==1)

continue;}

if(flag ==1)

continue;}

}int

main()

cout<

show_24 ( a )

;return0;

}

用撲克牌計算24點(C)

一副撲克牌的每張牌表示乙個數 j q k 分別表示 11 12 13,兩個司令都表示 6 任取4 張牌,即得到 4 個 1 13 的數,請新增運算子 規定為加 減 乘 除 四種 使之成為乙個表示式。每個數只能參與一次運算,4 個數順序可以任意組合,4 個運算子任意取 3 個且可以重複取。運算遵從一定...

撲克牌排序 趣味撲克牌

一提到撲克牌,我們就想到神秘的魔術表演,撲克牌上有很多形狀和數字,裡面蘊藏了很多數學知識哦!瞧 subway的小朋友們正在進行趣味撲克牌的遊戲呢!好多撲克牌啊!撲克牌中間怎麼是空的呢?哇,還有這麼小的撲克牌呢!一看到teacher手中的撲克牌,小傢伙們乙個個的都興奮起來,迫不及待想要分享自己的見解呢...

生成撲克牌

class card private int id public int rank 大小 public cardsuit suit 花色 public override string tostring public static ienumerablegetcards54 隨機發54張牌 publi...