Advertisement

每天一道算法题:扑克牌顺子

阅读量:

题目:

随机从一副扑克牌中抽取五张卡片,判断其是否构成顺子,即这五张牌的点数是否为连续数值。其中,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)

还没有任何评论哟~