idea
codes
從瑞神家打牌回來後,東東痛定思痛,決定苦練牌技,終成賭神!
東東有 a × b 張撲克牌。每張撲克牌有乙個大小(整數,記為a,範圍區間是0到a-1)和乙個花色(整數,記為b,範圍區間是 0 到 b - 1。撲克牌是互異的,也就是獨一無二的,也就是說沒有兩張牌大小和花色都相同。 「一手牌」的意思是你手裡有5張不同的牌,這 5 張牌沒有誰在前誰在後的順序之分,它們可以形成乙個牌型。 我們定義了 9 種牌型,如下是 9 種牌型的規則,我們用「低序號優先」來匹配牌型,即這「一手牌」從上到下滿足的第乙個牌型規則就是它的「牌型編號」(乙個整數,屬於1到9):
現在, 東東從a × b 張撲克牌中拿走了 2 張牌!分別是 (a
1, b
1) 和 (a
2, b
2). (其中a表示大小,b表示花色)
現在要從剩下的撲克牌中再隨機拿出 3 張!組成一手牌!!
其實東東除了會打**,他業餘還是乙個魔法師,現在他要預言他的未來的可能性,即他將拿到的「一手牌」的可能性,我們用乙個「牌型編號(乙個整數,屬於1到9)」來表示這手牌的牌型,那麼他的未來有 9 種可能,但每種可能的方案數不一樣。
現在,東東的阿戈摩托之眼沒了,你需要幫他算一算 9 種牌型中,每種牌型的方案數。
第 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)).
輸出一行,這行有 9 個整數,每個整數代表了 9 種牌型的方案數(按牌型編號從小到大的順序)
5 21 0 3 1
0 8 0 0 0 12 0 36 0
25 40 0 24 3
0 0 0 2 18 1656 644 36432 113344這道模擬題需要分情況處理,另外通過增加每個情況的可能出現的先決條件來剔除一些不會出現的可能,減少運算負擔。比如如果已經抽好的兩張牌本身就不同色或者差值》=5或者相等,同花順情況都一定為0。
其中不同情況的判斷和處理如下:(考慮的都是從已知的a,b,a1,a2,b1,b2判斷後可以出現該種情況的條件下)
#include#includeusing namespace std;
int a,b,a1,b1,a2,b2;
int s[9]=; //存放最終結果
void getchance1239()
}void getchance6()
}void getchance7()
}void getchance8()
} void getchance()
void input()
void output()
int main()
程式設計思維與實踐 Week6 限時大模擬
從瑞神家打牌回來後,東東痛定思痛,決定苦練牌技,終成賭神!東東有 a b 張撲克牌。每張撲克牌有乙個大小 整數,記為a,範圍區間是 0 到 a 1 和乙個花色 整數,記為b,範圍區間是 0 到 b 1。撲克牌是互異的,也就是獨一無二的,也就是說沒有兩張牌大小和花色都相同。一手牌 的意思是你手裡有5張...
程式設計思維與實踐 Week6 限時大模擬
從瑞神家打牌回來後,東東痛定思痛,決定苦練牌技,終成賭神!東東有 a b 張撲克牌。每張撲克牌有乙個大小 整數,記為a,範圍區間是 0 到 a 1 和乙個花色 整數,記為b,範圍區間是 0 到 b 1。撲克牌是互異的,也就是獨一無二的,也就是說沒有兩張牌大小和花色都相同。一手牌 的意思是你手裡有5張...
《程式設計思維與實踐》 week6 限時大模擬
從瑞神家打牌回來後,東東痛定思痛,決定苦練牌技,終成賭神!東東有 a b 張撲克牌。每張撲克牌有乙個大小 整數,記為a,範圍區間是 0 到 a 1 和乙個花色 整數,記為b,範圍區間是 0 到 b 1。撲克牌是互異的,也就是獨一無二的,也就是說沒有兩張牌大小和花色都相同。一手牌 的意思是你手裡有5張...