扑克牌顺子

匿名 (未验证) 提交于 2019-12-03 00:39:02

题目描述

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!