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 扑克序列枚举的主要内容,如果未能解决你的问题,请参考以下文章