1. 程式人生 > >面試題:撲克牌中的順子

面試題:撲克牌中的順子

從撲克牌中隨機抽5張牌,判斷是不是一個順子,即這5張牌是不是連續的。2~10為數字本身,A為1,J為11,Q為12,K為13,而大小王可以看成任意數字。

思路:如果一副牌裡含有對子,則不可能是順子。

bool IsContinuous(int* numbers,int length)

{

 if(numbers==nullptr||length<1)

 return false;

 qsort(numbers,length,sizeof(int),compare);

int numberOfZero=0;

int numberOfGap=0;

for(int i=0;i<length&&numbers[i]==0;++i)

 ++numberOfZero;

int small=numberOfZero;

int big=small+1;

while(big<length)

{

 if(numbers[small]==numbers[big])

 return false;

 numberOfGap+=numbers[big]-numbers[small]-1;

 small=big;

 ++big;

}

return (numberOfGap>numberOfZero)?false:true;

}

int compare(const void *arg1,const void *arg2)

{

 return *(int*)arg1-*(int*)arg2;


}