面試題44 撲克牌的順子

2022-04-28 19:00:10 字數 546 閱讀 1154

題目:從撲克牌中隨機抽取5張牌,判斷是不是乙個順子,即這5張牌是不是連續的。2~10為數字本身,a為1,j為11,q為12,k為13,而大王小王可以看成任意數字。

分析:我們用0來表示大王和小王。判斷5個數字是否是連續的有如下三步:

1. 將陣列排序

2. 統計陣列中0的個數

3. 統計排序之後的陣列中相鄰數字之間的空缺總數。如果空缺的總數小於或者等於0的個數,那麼這個陣列就是連續的;反之不連續。

還需要注意的是,如果陣列中的非0數字重複出現,則該陣列不是連續的。

1

bool iscontinuous(vector&numbers)214

//統計空缺總數

15int numberofgap = 0;16

for (int i = 0; i < n-1; ++i)

1722

return (numberofgap <= numberofzero)?true:false

;23 }

ps:由於本題的陣列只有5個數,因此排序演算法的選擇不會有多少區別。

面試題44 撲克牌的順子

題目 從撲克牌中隨機抽5張牌,判斷是不是乙個順子,即這5張牌是不是連續的。2 10為數字本身,a為1,j為11,q為12,k為13,而大 小王可以看成任意數字。思路 可以把5張牌看做乙個陣列,大小王設為0。然後對陣列進行排序,看陣列的數字是不是連續的,因為0可以看做任意數字,所以如果相鄰兩個數字之間...

面試題目44 撲克牌的順子

題目 從撲克牌中隨機抽五張牌,判斷是不是乙個順子,即這五張牌是不是連續的。2 10為數字本身,a為1,j為11,q為12,k為13,大小王可以看成任意數字。示例 include include using namespace std const int num 14 struct mystruct ...

面試題61 撲克牌順子

題目描述 ll今天心情特別好,因為他去買了一副撲克牌,發現裡面居然有2個大王,2個小王 一副牌原本是54張 他隨機從中抽出了5張牌,想測測自己的手氣,看看能不能抽到順子,如果抽到的話,他決定去買體育彩票,嘿嘿!紅心a,黑桃3,小王,大王,方片5 oh my god 不是順子 ll不高興了,他想了想,...