LQ0199 扑克序列枚举

Posted 海岛Blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LQ0199 扑克序列枚举相关的知识,希望对你有一定的参考价值。

题目来源:蓝桥杯2014初赛 C++ A组F题

题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

扑克序列

A A 2 2 3 3 4 4, 一共4对扑克牌。请你把它们排成一行。

要求:两个 A 中间有 1 张牌,两个 2 之间有 2 张牌,两个 3 之间有 3 张牌,两个 4 之间有 4 张牌。

请填写出所有符合要求的排列中,字典序最小的那个。

例如:22AA3344 比 A2A23344 字典序小。当然,它们都不是满足要求的答案。

问题分析
用置换函数进行枚举。

AC的C++语言程序如下:

/* LQ0199 扑克序列 */

#include <iostream>
#include <algorithm>

using namespace std;

bool judge(string &s)

    if (s.rfind('A') - s.find('A') == 2 &&
            s.rfind('2') - s.find('2') == 3 &&
            s.rfind('3') - s.find('3') == 4 &&
            s.rfind('4') - s.find('4') == 5)
        return true;
    else
        return false;


int main()

    string s = "223344AA";
    do 
        if (judge(s)) 
            cout << s << endl;
            break;
        
     while (next_permutation(s.begin(), s.end()));

    return 0;

以上是关于LQ0199 扑克序列枚举的主要内容,如果未能解决你的问题,请参考以下文章

LQ0266 巧排扑克牌模拟

LQ0235 扑克牌移动程序填空

JavaScript一个简易枚举类型实现扑克牌

扑克序列

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

扑克序列