微信扫一扫打赏支持

php实现求扑克牌顺子(*****)(AC)(分类:把问题分小,利于排错)

php实现求扑克牌顺子(*****)(AC)(分类:把问题分小,利于排错)

一、总结

分类(那就可以把问题分小而逐步完成每个板块,这样是很简单的)

分类还有助于查错

 

二、php实现求扑克牌顺子

题目描述

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。

 

三、代码

 1 <?php
 2 //算法步骤:分类(那就可以把问题分小而逐步完成每个板块,这样是很简单的)
 3 function IsContinuous($numbers)
 4 {
 5     sort($numbers);
 6     $haveWang=false;
 7     $wangNum=0;
 8     foreach($numbers as $key=>$val){
 9         if($val==0){ $haveWang=true; $wangNum++;} 
10     }
11     //抽到的牌有大小王的时候
12     if($haveWang){
13         //有1个王
14         if($wangNum==1){
15             //求数之间的差值
16             $cha=0;
17             for($i=1;$i<4;$i++){$cha+=$numbers[$i+1]-$numbers[$i];}
18             if($cha==3||$cha==4) return true;
19             else return false;
20         }
21         //有2个王
22         if($wangNum==2){
23             $cha=0;
24             for($i=2;$i<4;$i++){$cha+=$numbers[$i+1]-$numbers[$i];}
25             if($cha==3||$cha==4||$cha==2) return true;
26             else return false;
27         }
28         //有3个王
29         if($wangNum==3){
30             $cha=0;
31             for($i=3;$i<4;$i++){$cha+=$numbers[$i+1]-$numbers[$i];}
32             if($cha==1||$cha==3||$cha==4||$cha==2) return true;
33             else return false;
34         }
35         //有4个王
36         if($wangNum==4){
37             return true;
38         }
39     }else{//没抽到大小王的时候
40         $maxPai=$numbers[4];
41         $minPai=$numbers[0];
42         //如果最大减最小大于4,返回false
43         if($maxPai-$minPai>4) return false;
44         //如果最大减最小小于4,说明有重复,返回false
45         if($maxPai-$minPai<4) return false;
46         //等于4的话,要保证每张不一样
47         $numbers=array_unique($numbers);
48         if(count($numbers)==5) return true;
49     }
50     
51     
52 }

 

posted @ 2018-05-26 23:47  范仁义  阅读(930)  评论(0编辑  收藏  举报