zoukankan      html  css  js  c++  java
  • 【编程题目】扑克牌的顺子

    67.俩个闲玩娱乐(运算)。
    1.扑克牌的顺子
    从扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这 5 张牌是不是连续的。
    2-10 为数字本身,A 为 1,J 为 11,Q 为 12,K 为 13,而大小王可以看成任意数字。

    思路: 用min、max记录输入的牌对应的数字大小,不考虑王,用wnum记录王的个数, record[13]记录每种牌是否出现过。设要判断n个牌是否连续

    只要  出现不重复 且(max - min + 1) 在 [ n - wnum , n ]之间即可

    /*
    67.俩个闲玩娱乐(运算)。
    1.扑克牌的顺子
    从扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这 5 张牌是不是连续的。
    2-10 为数字本身,A 为 1,J 为 11,Q 为 12,K 为 13,而大小王可以看成任意数字。
    */
    
    #include <stdio.h>
    int getnum(char c) //默认输入的数字都是对的
    {
        switch(c)
        {
        case 'A':
            return 1;
        case 'J':
            return 11;
        case 'Q':
            return 12;
        case 'K':
            return 13;
        default:
            return (c - '0');
        }
    
    }
    
    bool isContinues(char * cards, int n)
    {
        int record[13] = {0};
        int max = 0, min = 14;
        int wnum = 0; //王的个数
        for (int i = 0; i < n; i++)
        {
            if (cards[i] == 'W') //王用 W表示
            {
                wnum++;
                continue;
            }
            int num = getnum(cards[i]);
            if (record[num - 1] == 1)
            {
                return false;
            }
            else
            {
                record[num - 1] = 1;
            }
            max = (num > max) ? num : max;
            min = (num < min) ? num : min;
        }
        return ((max - min + 1) <= n && (max - min + 1) >= (n - wnum));
    }
    
    int main()
    {
        char c[5] = {'A','5','5','W','W'};
        bool f = isContinues(c, 5);
        return 0;
    }

    网上的思路都是用排序,我觉得我的思路就挺好的,只需循环一遍,空间换时间了。

  • 相关阅读:
    eclipse中文乱码问题解决方案
    修改Tomcat的JDK目录
    Tomcat 5.5 修改服务器的侦听端口
    HTML DOM教程 27HTML DOM Button 对象
    HTML DOM教程 24HTML DOM Frameset 对象
    Navicat for MySQL v8.0.27 的注册码
    HTML DOM教程 25HTML DOM IFrame 对象
    Tomcat 5.5 的下载和安装
    android manifest相关属性
    ubuntu10.04 下 eclipse 小结
  • 原文地址:https://www.cnblogs.com/dplearning/p/3916935.html
Copyright © 2011-2022 走看看