劍指Offer 面試題44 撲克牌的順子

2021-06-25 13:53:38 字數 1172 閱讀 4691

/*

撲克牌的順子:

從撲克牌中隨機抽出5張牌,判斷是不是乙個順子,即這5張牌是不是連續的。2~10為數字本身,a為1,j為11,

q為12,k為13,而大小王可以看成任意數字。

分析:如何確定5個數字是連續的?

難道用累加判斷

過程:1把陣列排序,2統計0的個數,3統計陣列中相鄰元素之間的空缺總數

如果空缺總數<=0的個數,那麼是連續的

注意:如果陣列中非0數字重複出現,那麼不可能是對子

輸入:輸入有多組資料。

每組資料報含兩行,第一行輸入乙個正數n(0<=n<=14),表示從撲克牌中抽出的撲克牌數。接下來的一行輸入n個數,表示從這幅撲克牌中抽出的牌。如果n=0,則結束輸入。

輸出:對應每組資料,如果抽出的牌是順子,則輸出「so lucky!」。否則,輸出「oh my god!」。

樣例輸入:

53 5 1 0 4

53 5 4 7 6

53 5 7 4 8

0樣例輸出:

so lucky!

so lucky!

oh my god!

*//*

關鍵:1 把陣列排序,2統計0的個數,3統計陣列中相鄰元素之間的空缺總數

如果空缺總數<=0的個數,那麼是連續的

注意:如果陣列中非0數字重複出現,那麼不可能是對子

if(parr[j] == parr[j+1] )

*/#include #include using namespace std;

const int maxsize = 15;

bool iscontinuous(int* parr,int n)

int icnt_blank = 0;//記錄總空缺數

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

else

}if(icnt_blank <= icnt_0)

else }

void process()

int iarr[maxsize];

for(int i = 0 ; i < n ; i++)//輸入n個數

if(iscontinuous(iarr,n))

else

}}int main(int argc,char* argv)

劍指offer 面試題44 撲克牌的順子

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

劍指offer 面試題44 撲克牌中的順子

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

劍指Offer學習 面試題44 撲克牌的順子

總體思路 快拍 判斷0的個數 從第乙個非0位置。兩個差1index快慢指標,統計快慢指標位置是否是同樣元素,如果是那麼不是順子,如果不是那麼統計快指標和慢指標斷層的和 也就是相差大於1 最後對比0的個數是否大於等於斷層的數字。我們可以把5張牌看成由5個數字組成的陣列。大 小王是特殊的數字,我們不妨把...