扑克的顺子

先求出0的个数,如果数字间隔小于0的个数则可以组成顺子

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。

#include<stdio.h>
#include<string.h>
#include <pthread.h>
#include <iostream>
#include <algorithm>
#include <vector>
#include <stack>
#include <stdlib.h>
#include <sstream>
using namespace std;

struct ListNode
{
    int val;
    struct ListNode *next;
    ListNode(int x) :
        val(x), next(NULL)
    {
    }
};

class Solution
{
public:
    bool IsContinuous( vector<int> numbers )
    {
        if(numbers.size()!=5)
            return false;
        sort(numbers.begin(),numbers.end());
        int numOfZero=0;
        int i;
        for(i=0; i<numbers.size(); i++)
        {
            if(numbers[i]==0)
                numOfZero++;
        }
        int gap=0;
        for(i=numOfZero; i<numbers.size()-1; i++)
        {
            if(!Diff(numbers[i],numbers[i+1]))//如果diff等于0,说明这两个数字相同,那么不能组成序列
                return false;
            gap += numbers[i+1]-numbers[i]-1;//比如,1和3之间间隔为1,所以是numbers[i+1]-numbers[i]-1
        }
        return (gap>numOfZero)?false:true;
    }

    int Diff(int left,int right)
    {
        return right-left;
    }

};

int main()
{

    Solution s;
    vector<int> numbers= {0,1,1,3,0};
    cout<<s.IsContinuous(numbers);
    return 0;

}
时间: 2024-08-25 03:12:19

扑克的顺子的相关文章

hihoCoder挑战赛12 顺子(hihocoder 1177)

题目链接:http://hihocoder.com/problemset/problem/1177 题面: #1177 : 顺子 时间限制:6000ms 单点时限:1000ms 内存限制:256MB 描述 你在赌场里玩梭哈,已经被发了4张牌,现在你想要知道发下一张牌后你得到顺子的概率是多少? 假定赌场使用的是一副牌,四种花色的A.2.3.....J.Q.K共52张,这副牌只发给你了4张,你的剩下一张牌从剩下48张中任意取出一张. 顺子指的是点数连续的五张牌,包括10.J.Q.K.A这种牌型(不包

分享一个德州扑克的算法

德州扑克想必很多人都玩过,当然对于新手需要说明的是,德州指的是德克萨斯州,而不是山东德州. 这几个月一直在做一个德州扑克的服务器,分享下在计算最大牌型,比牌逻辑的算法和洗牌的方法,希望对大家有帮助. 首先我们定义一下Poker类 public class Poker { private String tag; // 图片扑克花色的表示(代表的是红桃.黑桃,梅花.方块 private int num; // 表示扑克牌面的大 public Poker(String tag, int num) {

模拟德州扑克对战游戏

================================================================ 注意:本文参考"巧妙的Python数据结构玩法|实战德州扑克"的相关内容,并在此基础之上完成模拟扑克对战游戏. 原文网址:http://mp.weixin.qq.com/s/JQ0zJGf7Tz49Xn78x7Z40g ================================================================ 我们写了两

[“斗地主”的技巧:扑克游戏指导].孔维民.扫描版

第一章 概述 一.斗地主的渊源与沿革 二.斗地主的基本特点 三.输赢的大小更多受心态影响 第二章 游戏规则 一.3人一副牌的斗地主规则 二.4人两副牌的斗地主规则 三.敞牌明斗规则 第三章 叫牌——战略成就的基本保证 一.叫牌一定要谨慎 二.根据量化的牌点指标.牌型来叫牌 三.掉张小牌太多,即便牌力强,也不应博底牌叫牌 第四章 斗地主必须掌握基本的概率知识 一.斗地主的基本牌张的概率分布 二.根据概率的计算结果选择成功率比较高的打法 三.按照“概率×收益”的公式进行理性博弈 第五章 斗地主的核心

hihocoder 1177 : 顺子

#1177 : 顺子 时间限制:6000ms 单点时限:1000ms 内存限制:256MB 描述 你在赌场里玩梭哈,已经被发了4张牌,现在你想要知道发下一张牌后你得到顺子的概率是多少? 假定赌场使用的是一副牌,四种花色的A.2.3.....J.Q.K共52张,这副牌只发给你了4张,你的剩下一张牌从剩下48张中任意取出一张. 顺 子指的是点数连续的五张牌,包括10.J.Q.K.A这种牌型(不包含同花顺,即构成顺子的五张牌花色不能相同).参 见:https://zh.wikipedia.org/wi

德州扑克AI

德州扑克: 1:outs数,就是所听的牌的数量. 例子: 1:听顺子 4567 outs数就是8,能够成顺子的牌为3和8. 5689 outs数就是4,能够成顺子的牌只有7. 2:听同花     359J outs数就是9,能够成牌的是同一种花色的'A','2','4','6','7','8','10','Q','K'. 3:听同花顺 4567 outs数就是2,能够成牌的是同一种花色的'3','8'. 5689 outs数就是1,能够成牌的是同一种花色的'7'. 4:听同花或顺子 4567 o

[swustoj 1088] 德州扑克

德州扑克(1088) 问题描述 德州扑克是一款风靡全球的扑克游戏.德州扑克一共有52张牌,没有王牌.每个玩家分两张牌作为“底牌”,五张由荷官陆续朝上发出的作为公共牌.开始的时候,每个玩家会有两张面朝下的底牌.经过所有押注圈后,若仍不能分出胜负,游戏会进入“摊牌”阶段,也就是让所剩的玩家亮出各自的底牌以较高下,持大牌者获胜.因技巧性强,易学难精又被称为“扑克游戏中的凯迪拉克”. 现在有N个玩家进入摊牌阶段(编号为1到N),摊牌阶段比大小的规则是,用自己的2张底牌和5张公共牌结合在一起,选出5张牌,

棋牌平台搭建教程-德州扑克算法详解

德州扑克是一种技巧性非常强的扑克游戏,有一定的运气成分,但玩家之间主要还是要靠斗智力.耍手腕.动脑筋.其规则非常简单,比较容易掌握,但是要达到精通的境界却有一定的难度. 我们可以定义一个枚举来罗列出所有的牌型: [cpp] view plain copy //牌的类型枚举 enum CardTypeEnum { ctNoneCard = 0, ctHighCard,      //高牌 ctDouble_OneCard,//一对 ctDouble_TwoCard,//二对 ctThreeCard

德州扑克游戏

哇,好久好久没写东西啦... 这两天实现了一个简单的游戏引擎,可以发牌,可以比较两手牌的大小 由于最近都在倒腾Golang,所以用GO实现的.这阶段过后准备用这个引擎来实现一个简单的AI对战,现在先记录一下 接下来我假设你已经懂游戏规则和俗语了 首先是牌的储存,2~~A,一共13张牌,我用的是一个14位的二进制区间来储存的,比如2-A,将表示为:11111111111110,辣么第一位是干啥的呢,请继续看下面 这样的储存方式除了省空间外还有什么优势呢?我们顺子的判断为例:例如顺子10JQKA,在