劍指offer 撲克牌順子

2021-07-10 15:07:32 字數 1014 閱讀 9161

ll今天心情特別好,因為他去買了一副撲克牌,發現裡面居然有2個大王,2個小王(一副牌原本是54張^_^)...他隨機從中抽出了5張牌,想測測自己的手氣,看看能不能抽到順子,如果抽到的話,他決定去買體育彩票,嘿嘿!!「紅心a,黑桃3,小王,大王,方片5」,「oh my god!」不是順子.....ll不高興了,他想了想,決定大\小 王可以看成任何數字,並且a看作1,j為11,q為12,k為13。上面的5張牌就可以變成「1,2,3,4,5」(大小王分別看作2和4),「so lucky!」。ll決定去買體育彩票啦。 現在,要求你使用這幅牌模擬上面的過程,然後告訴我們ll的運氣如何。為了方便起見,你可以認為大小王是0。

解題思路:

由於可以用王來表示任意的牌,那麼先對這5張牌進行排序,統計出王的張數,在統計出除王之外剩餘的牌要組成順子還需要多少張牌。將5張牌中王的張數與需要的牌的張數進行比較。如果需要的牌的數目小於等於王的數目。那麼就認為這5張牌可以組成順子。否則不行。在這個過程中還要判斷是不是又相等的牌,如果存在相等的牌,他們也是不能組成順子的。

c++**:

bool iscontinuous( vectornumbers )

//qsort(numbers, numbers.size(), sizeof(int), compare);

sort(numbers.begin(), numbers.end());//對5張牌進行排序

int numbersofzero = 0;//王 用0表示,numbersofzero表示王的數目

int lack = 0;//lack表示需要組成順子,還需要的牌的數目

for (int i = 0; i < numbers.size(); i++)

else

if (numbers[i] - numbers[j] != 1)//如果前後相鄰的非0數字相差不是1的話,說明需要王來填補空缺

lack += (numbers[i] - numbers[j] - 1); }

} }if (lack > numbersofzero)

return true; }

劍指offer 撲克牌順子

劍指offer 撲克牌順子.cpp 定義控制台應用程式的入口點。題目描述 輸入五個數字,0可以代表任何數,問這五個數字是否是乙個順子 思路 排序後計算非0的相鄰兩個數之間的距離 gap 然後與0 大小王 的數量進行比較,看是否小於這個count include stdafx.h include ve...

劍指offer 撲克牌順子

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

劍指offer 撲克牌順子

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