每天一道算法题:扑克牌顺子
发布时间
阅读量:
阅读量
题目:
随机从一副扑克牌中抽取五张卡片,判断其是否构成顺子,即这五张牌的点数是否为连续数值。其中,2至10的牌对应其本身数值,A代表1,J代表11,Q代表12,K代表13,而大小王可视为任意数值的牌进行替代。
思路:
将王的数值设定为0。计算非王牌之间存在的间隔数量,当该数值小于王的数量(即需要填补的数量)时,判定为顺子。若存在任意一张牌的数值超过2,则不构成顺子。
代码实现与功能验证
bool process(const char* str=NULL){
if(!str||strlen(str)<5)
return false;
int* data=new int[14];
memset(data,0,14*sizeof(int));//使用之前一定初始化
while(*str!='\0')
data[*str++ - '0']++;//统计牌数
int counter=0;//非王的牌的总数
int blank=0;//牌之间的空格数
bool flag=false;
for(int i=1;i<14&&(counter<=5
全部评论 (0)
还没有任何评论哟~
