用佇列對撲克牌排序

2021-06-19 04:56:48 字數 1453 閱讀 7838

描述

假設這裡有36張撲克牌,分別為a1~a9,b1~b9,c1~c9,d1~d9,其中a代表方片,b代表草花,c代表紅桃,d代表黑桃,那麼,設定如下的排序規則:

1.對於兩張卡牌,x1y1與x2y2,x1與x2表示a~d,y1與y2表示1~9,如果x1與x2不同,那麼依照d>c>b>a的方式進行排序

2.假如有x1與x2相同時,那麼就比較y1與y2的大小。

例如,對於如下的四張牌,有如下的公升序排序結果:

d3,c4,a4,c1

公升序排序的結果為a4,c1,c4,d3

有人提出了如下的排序策略:

先建立9個佇列,用於存放點數的大小,將卡牌依點數存放入各自的佇列之中,然後再按佇列1到佇列9依次出隊。

例如,對於上面的結果,依次進隊後,結果如下:

佇列1:c1;佇列3:d3,佇列4:c4,a4

將其依次出隊後,結果為c1,d3,c4,a4

然後,再建立4個佇列,用於存放花色。將卡牌依花色a~d存放入佇列1~4中,然後再按佇列1到佇列4依次出隊。

例如,對於上面剛剛出隊的序列c1,d3,c4,a4,將其依次進隊,結果如下:

佇列1:a4;佇列3:c1,c4;佇列4:d3

將其依次出隊後,結果為a4,c1,c4,d3,排序結束。

請根據上面的演算法,編寫乙個用佇列對撲克牌排序的程式,要求依照上面的排序規則,根據先花色後點數的方法進行排序。

輸入輸入分為兩行,第一行為乙個整數n,表示一共有n張牌(1<=n<=100)

第二行用xy的形式表示每一張牌,其中x為a~d,y為1~9

輸出輸出三個部分

第乙個部分為第一次進隊出隊的結果,用queue1:...表示,共9行,結果用空格分隔,下同

第二部分為第二次進隊出隊的結果,用queuea:...表示,共4行

第三部分為一行,即將卡牌排序後的結果(公升序排序)

樣例輸入

8d8 a6 c3 b8 c5 a1 b5 d3

樣例輸出

queue1:a1queue2:queue3:c3 d3queue4:queue5:c5 b5queue6:a6queue7:queue8:d8 b8queue9:queuea:a1 a6queueb:b5 b8queuec:c3 c5queued:d3 d8a1 a6 b5 b8 c3 c5
d3 d8
解題:
#include #include #include #include using namespace std;

class poker

;int main()

{int n=0,p_temp;

char c_temp;

queuepokqueue;

queuepokpoint[10];

queuepokcolor[5];

scanf("%d",&n);

getchar();

for(int i=0;i

撲克牌排序 趣味撲克牌

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

撲克牌排序 tkinter模擬撲克牌和狼人殺發牌

今天我們用tkinter的canvas畫布實現撲克牌的隨機發牌 將54張牌隨機發給四位牌手,在螢幕上顯示每位牌手的牌,利用canvas將發牌結果顯示出來。需要準備的是54張撲克牌的 gif或者png,jpg的話要經過額外的轉換 為了保證最終的牌序是按照由小到大排列的,編號要按照aaaa 2222 k...

洗撲克牌 亂數排序

洗撲克牌 亂數排列 說明 洗撲克牌的原理其實與亂數排列是相同的,都是將一組數字 例如1 n 打亂重新排列,只 不過洗撲克牌多了乙個花色判斷的動作而已。解法 初學者通常會直接想到,隨機產生1 n的亂數並將之存入陣列中,後來產生的亂數存入陣列 前必須先檢查陣列中是否已有重複的數字,如果有這個數就不存入,...