首页 > 代码库 > 扑克牌的顺子
扑克牌的顺子
题目:从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J,Q,K分别为11,12,13,而大小王可以看成任意数字。
分析:我们假定大小王为0,首先将数组排序,再统计数组中的0的个数,最后统计排序之后的数组中相邻数字之间的空缺总数。如果空缺的总数小于或者等于0的个数,那么这个数组就是连续的,否则就不是。另外,当数组中非零数字重复出现,说明牌中有对子,则这个数组不可能是顺子。实现如下:
bool IsContinuous(int* numbers,int length) { if(numbers==NULL||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=numberOfGap; 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) { retrun *(int*)arg1=*(int*)arg2; }
本文出自 “仙路千叠惊尘梦” 博客,请务必保留此出处http://secondscript.blog.51cto.com/9370042/1588254
扑克牌的顺子
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。