zoukankan      html  css  js  c++  java
  • 扑克牌顺子

    题目描述

    从扑克牌中随机抽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;
        }
  • 相关阅读:
    正则表达式
    9.4、分布式进程
    Linux文件编辑工具——VIM
    14 Linux网络管理
    13.Linux系统服务
    12.Linux进程管理
    11.Linux磁盘管理——lvm,raid
    10.Linux磁盘管理
    09.Linux软件包管理——(YUM 、RPM)
    07.Linux 压缩打包
  • 原文地址:https://www.cnblogs.com/Lune-Qiu/p/9264526.html
Copyright © 2011-2022 走看看