從瑞神家打牌回來後,東東痛定思痛,決定苦練牌技,終成賭神!
東東有 a × b 張撲克牌。每張撲克牌有乙個大小(整數,記為a,範圍區間是 0 到 a - 1)和乙個花色(整數,記為b,範圍區間是 0 到 b - 1。
撲克牌是互異的,也就是獨一無二的,也就是說沒有兩張牌大小和花色都相同。
「一手牌」的意思是你手裡有5張不同的牌,這 5 張牌沒有誰在前誰在後的順序之分,它們可以形成乙個牌型。 我們定義了 9 種牌型,如下是 9 種牌型的規則,我們用「低序號優先」來匹配牌型,即這「一手牌」從上到下滿足的第乙個牌型規則就是它的「牌型編號」(乙個整數,屬於1到9):
同花順: 同時滿足規則 5 和規則 4.
炸彈 : 5張牌其中有4張牌的大小相等.
三帶二 : 5張牌其中有3張牌的大小相等,且另外2張牌的大小也相等.
同花 : 5張牌都是相同花色的.
順子 : 5張牌的大小形如 x, x + 1, x + 2, x + 3, x + 4
三條: 5張牌其中有3張牌的大小相等.
兩對: 5張牌其中有2張牌的大小相等,且另外3張牌中2張牌的大小相等.
一對: 5張牌其中有2張牌的大小相等.
要不起: 這手牌不滿足上述的牌型中任意乙個.
現在, 東東從a × b 張撲克牌中拿走了 2 張牌!分別是 (a
1, b
1) 和 (a
2, b
2). (其中a表示大小,b表示花色)
現在要從剩下的撲克牌中再隨機拿出 3 張!組成一手牌!!
其實東東除了會打**,他業餘還是乙個魔法師,現在他要預言他的未來的可能性,即他將拿到的「一手牌」的可能性,我們用乙個「牌型編號(乙個整數,屬於1到9)」來表示這手牌的牌型,那麼他的未來有 9 種可能,但每種可能的方案數不一樣。
現在,東東的阿戈摩托之眼沒了,你需要幫他算一算 9 種牌型中,每種牌型的方案數。
input
第 1 行包含了整數 a 和 b
(5 ≤ a ≤ 25, 1 ≤ b ≤ 4).
第 2 行包含了整數 a
1, b
1, a
2, b
2(0 ≤ a
1, a
2 ≤ a - 1, 0 ≤ b
1, b
2 ≤ b - 1, (a
1, b
1) ≠ (a
2, b
2)).
output
輸出一行,這行有 9 個整數,每個整數代表了 9 種牌型的方案數(按牌型編號從小到大的順序)
examples
input
5 21 0 3 1
output
0 0 0 0 8 0 12 36 0
input
25 40 0 24 3
output
0 2 18 0 0 644 1656 36432 113344
本題是一道模擬題,模擬每種情況並判斷屬於哪種牌。
但是我做成了一道組合題。。。
對於給定的牌,我們很容易根據已知的兩張得到另外的三張牌的可能結果,然後列舉判斷。
我的思路是根據組合公式計算具體每種牌的數目。具體計算的時候要注意同花、順子、同花順這些的區別和聯絡,要去重!!
1 #include2 #include3using
namespace
std;
4int
a,b,a1,b1,a2,b2;
5long
long sign=0;6
//typedef struct node card;
10/*
5 211
0 1 1 1
121 0 0 1 7 0 12 36 -1
13*/
14long
long zuhe(int n,int
m)20
//1、同花順
21long
long
ths()
34else
if(cha==2)43
else
if(cha==1
) 53}
54 sign +=result;
55return
result;56}
57//
2炸彈
58long
long
zd()
65else68}
69 sign +=result;
70return
result; 71}
72//
3 三帶二
73long
tw()
81else85}
86 sign +=result;
87return
result;88}
89//
4同花 錯了!!!
90long
th()
104else
if(cha==2
)113
else
if(cha==1
)
123}
124 sign+=result;
125return
result;
126}
127//
5順子
128long
long
sz()
142else
if(cha==2
)151
else
if(cha==1
)
161 sign +=result;
162return
result;
163}
164//
6 三條
165long
long
tt()
171else
176}
177 sign +=result;
178return
result;
179}
180//
7兩對
181long
long
tw()
193}
194 sign +=result;
195return
result;
196}
197//
8一對
198long
long
od()
212}
213 sign +=result;
214return
result;
215}
216long
long
ybq()
221int
main()
230//
九種方案
231 cout<"
"<"
"<"
"<232<<"
"<"
"<"
"<"
"<"";
233 cout234//
cout<235
//cout<236 sign=0
;237
return0;
238 }
掌握魔法 東東 II
題目 掌握魔法 東東 ii 題意 從瑞神家打牌回來後,東東痛定思痛,決定苦練牌技,終成賭神!東東有 a b 張撲克牌。每張撲克牌有乙個大小 整數,記為a,範圍區間是 0 到 a 1 和乙個花色 整數,記為b,範圍區間是 0 到 b 1。撲克牌是互異的,也就是獨一無二的,也就是說沒有兩張牌大小和花色都...
掌握魔法 東東 II
從瑞神家打牌回來後,東東痛定思痛,決定苦練牌技,終成賭神!東東有 a b 張撲克牌。每張撲克牌有乙個大小 整數,記為a,範圍區間是 0 到 a 1 和乙個花色 整數,記為b,範圍區間是 0 到 b 1。撲克牌是互異的,也就是獨一無二的,也就是說沒有兩張牌大小和花色都相同。一手牌 的意思是你手裡有5張...
掌握魔法 東東 II
從瑞神家打牌回來後,東東痛定思痛,決定苦練牌技,終成賭神!東東有 a b 張撲克牌。每張撲克牌有乙個大小 整數,記為a,範圍區間是 0 到 a 1 和乙個花色 整數,記為b,範圍區間是 0 到 b 1。撲克牌是互異的,也就是獨一無二的,也就是說沒有兩張牌大小和花色都相同。一手牌 的意思是你手裡有5張...