【编程题目 |100分】 最长的顺子【2021 H2, 2022 Q1,Q2 考试题】


时间限制:C/C++ 1秒,其他语言 2秒

空间限制:C/C++262144K,其他语言524288K

64bit IO Format:%lld


本题可使用本地IDE编码,不能使用本地已有代码,无跳出限制,

编码后请点击”保存并调试“按钮进行代码提交。


题目描述

【最长的顺子】

斗地主起源于湖北十堰房县,据说是一位叫吴修全的年轻人根据当地流行的扑克玩法“跑得快”改编的,如今已风靡整个中国,并流行于互联网上。

牌型:单顺,又称顺子,最少5张牌,最多12张牌(3…A)不能有2,也不能有大小王,不计花色。

例如: 3-4-5-6-7-8,7-8-9-10-J-Q,3-4-5-6-7-8-9-10-J-Q-K-A

可用的牌 3<4<5<6<7<8<9<10<J<Q<K<A<2<B(小王)<C(大王),每种牌除大小王外有四种花色

(共有13×4+2张牌)

输入

  1. 手上有的牌
  2. 已经出过的牌(包括对手出的和自己出的牌)

输出

  • 对手可能构成的最长的顺子(如果有相同长度的顺子,输出牌面最大的那一个),
  • 如果无法构成顺子,则输出 NO-CHAIN。

输入描述

输入的第一行为当前手中的牌

输入的第二行为已经出过的牌

输出描述

最长的顺子

示例1   输入输出示例仅供调试,后台判题数据一般不包含示例

输入 

3-3-3-3-4-4-5-5-6-7-8-9-10-J-Q-K-A

4-5-6-7-8-8-8

输出

9-10-J-Q-K-A

示例2   输入输出示例仅供调试,后台判题数据一般不包含示例

输入 

3-3-3-3-8-8-8-8

K-K-K-K

输出

NO-CHAIN

说明

剩余的牌无法构成顺子


代码实现


CPP


#include<bits/stdc++.h>

using namespace std;

void SplitString(string input, vector<string> &output, string pattern)
{
    string::size_type pos;
    input += pattern;
    for (int i = 0; i < input.size(); i++) {
        pos = input.find(pattern, i);
        if (pos < input.size()) {
            string temp = input.substr(i, pos - i);
            if ((temp != pattern) && (!temp.empty())) {
                output.push_back(temp);
            }
            i = pos + pattern.size() - 1;
        }
    }
}

剩余50%内容,订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:10金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看

JAVA


import java.util.*;

public class Main {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        String[] str1 = sc.nextLine().split("-");
        String[] str2 = sc.nextLine().split("-");

剩余50%内容,订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:10金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看

Python


剩余50%内容,订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:10金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看

JavaScript


剩余50%内容,订阅会员后查看


隐藏内容

此处内容需要权限查看

  • 普通用户特权:10金币
  • 会员用户特权:免费
  • 永久会员用户特权:免费推荐
会员免费查看