扑克牌排序

题目描述

小明手上有一副扑克牌,共 5252 张,共有 44 种花色,分别用 S、H、D、C 表示,每种花色有 1313 张牌,用数字 11 到 1313 表示。
在某种玩法中,对于单张牌而言,数字为 22 的牌最大,数字为 11 的次之,接下来从大到小依次为数字为 1313 的、数字为 1212 的......数字为 33 的牌最小。
如果牌面数字相同,花色为 S 的最大,接下来从大到小依次是花色为 H、D、C 的。
小明从这副扑克牌里抽出若干张,请你帮他排个序吧

【输入格式】

输入为 N+1 行:
第一行为一个整数 N,0<N≤52,为抽出的牌数;
接下来有 N 行,每行有一个字符和一个整数,分别代表牌的花色和牌面数字。
保证没有重复的牌。

【输出格式】

输出为 N 行,为按要求排序后的扑克牌。每行有一个字符和一个整数,分别代表牌的花色和牌面数字。

【输入输出样例】

输入

5
C 1
H 13
D 1
C 13
S 2

输出

S 2
D 1
C 1
H 13
C 13

思想

这是一道考察结构体的题目。结构体中有花色数字大小两个变量,但是数值为1或2的牌要进行特殊处理,可以先把1或2的牌加13,再去排序,最后遇见14或15时再减去13。

由于S,H,D,C在美国信息交换标准代码中已经有了顺序,所以直接排序就行了。

AC代码

#include <iostream>
#include <algorithm>
using namespace std;

struct Stu
{
	char c;
	int num;
}a[100005];

bool cmp (Stu x, Stu y)
{
	if (x.num != y.num)
	{
		return x.num > y.num;
	}
	return x.c > y.c;
}

int main()
{
	int n;
	cin >> n;
	for (int i = 1; i <= n; i++)
	{
		cin >> a[i].c >> a[i].num;
		if (a[i].num == 1 || a[i].num == 2)
		{	
			a[i].num += 13;
		}
	}
	sort(a + 1, a + n + 1, cmp);
	for (int i = 1; i <= n; i++)
	{
		if (a[i].num == 14 || a[i].num == 15)
		{	
			a[i].num -= 13;
		}
	}
	for (int i = 1; i <= n; i++)
	{
		cout << a[i].c << " " << a[i].num << endl;
	}

	return 0;
}

相关推荐

  1. 扑克牌排序

    2024-01-23 05:12:01       55 阅读
  2. 设计一套扑克牌

    2024-01-23 05:12:01       44 阅读
  3. VOJ 扑克牌 题解 01背包dp

    2024-01-23 05:12:01       36 阅读
  4. 华为校招机试 - 扑克牌消除(20240417)

    2024-01-23 05:12:01       29 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-23 05:12:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-23 05:12:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-23 05:12:01       82 阅读
  4. Python语言-面向对象

    2024-01-23 05:12:01       91 阅读

热门阅读

  1. 说说Python中的浅拷贝和深拷贝

    2024-01-23 05:12:01       60 阅读
  2. docker 部署postgres 、geoserver

    2024-01-23 05:12:01       50 阅读
  3. 所以说为什么面试两百家到手offer却只有个位数

    2024-01-23 05:12:01       47 阅读
  4. Vue关于router-link的使用和部分代码

    2024-01-23 05:12:01       49 阅读
  5. MySQL存储过程与触发器

    2024-01-23 05:12:01       57 阅读
  6. C++入门

    C++入门

    2024-01-23 05:12:01      47 阅读
  7. H5网页跳转支付宝进行支付

    2024-01-23 05:12:01       58 阅读