首页 > 其他 > 详细

扑克牌顺子

时间:2018-07-04 18:03:05      阅读:200      评论:0      收藏:0      [点我收藏+]

题目描述

从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10位数字本身,A为1,J为11,Q为12,K为13,而大王,小王可以看成任意数字。为了方便我们将大小王看成0。

思路:

1.找出5张牌中得大小王,即0的个数

2.将牌排序,找出相邻牌中的空隙数

3.如果空缺的总数小于或等于0的个数,那么数组是连续的。

在下面的代码中,使用了sort函数,第一个参数为数组首地址,第二个参数为数组尾地址,第三个参数为排序规则。默认为升序

我的代码:

    bool IsContinuous( vector<int> numbers ) {
        int len = numbers.size();
        if(len<5)
            return false;
        sort(numbers.begin(),numbers.end());
        int ZeroNum = 0;
        int GapNum = 0;
        for(int i = 0; i < len;i++)
        {
            if(numbers[i] == 0)
                ZeroNum++;
        }
        int x = ZeroNum;
        for(int j = ZeroNum+1; j < len;j++)
        {
            if(numbers[j] == numbers[x])
                return false;
            GapNum += numbers[j] - numbers[x] -1;//正常是相差一个,如果不连续的话就是间隔
            x = j;
        }
        return ZeroNum >= GapNum ? true : false;
    }

 

扑克牌顺子

原文:https://www.cnblogs.com/Lune-Qiu/p/9264526.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!