扑克牌顺子

题目描述

从扑克牌中随机抽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;
    }

猜你喜欢

转载自www.cnblogs.com/Lune-Qiu/p/9264526.html