蓝桥杯 12-2 扑克牌分类串操作
最编程
2024-04-20 20:48:04
...
1 #include <bits/stdc++.h>
2 using namespace std;
3 struct node{
4 char color; //花色d,c,h,s
5 int num; //对应的扑克牌数字用对应的实际数字表示,2~14
6 int c; //对应的花色用对应的数字表示,便于比较 1~4
7 } nd[5];
8 int check(char t) { //花色转数字
9 switch (t) {
10 case 'd': return 1;
11 case 'c': return 2;
12 case 'h': return 3;
13 case 's': return 4;
14 }
15 }
16 int judge(char c) { //A,J,Q,K转数字
17 switch (c) {
18 case 'A': return 14;
19 case 'J': return 11;
20 case 'Q': return 12;
21 case 'K': return 13;
22 }
23 }
24 bool cmp(node n1, node n2) {
25 if (n1.num != n2.num) {
26 return n1.num < n2.num;
27 }
28 return n1.c < n2.c;
29 }
30 int main() {
31 string s;
32 cin >> s;
33 int k = 0;
34 for (int i = 0; i < s.length(); i += 2) {
35 if (s[i] == '1') { //数字为10的情况单独处理
36 nd[k].num = 10;
37 nd[k].color = s[i + 2];
38 nd[k].c = check(nd[k].color); //把花色转为数字
39 i++;
40 k++;
41 } else if (s[i] >= '2' && s[i] <= '9') {
42 nd[k].num = s[i] - '0';
43 nd[k].color = s[i + 1];
44 nd[k].c = check(nd[k].color); //把花色转为数字
45 k++;
46 } else {
47 nd[k].num = judge(s[i]);
48 nd[k].color = s[i + 1];
49 nd[k].c = check(nd[k].color); //把花色转为数字
50 k++;
51 }
52 }
53 sort(nd, nd + 5, cmp);
54 for (int i = 0; i < 5; i++) {
55 if (nd[i].num >= 11) {
56 switch (nd[i].num) {
57 case 11: cout << 'J'; break;
58 case 12: cout << 'Q'; break;
59 case 13: cout << 'K'; break;
60 case 14: cout << 'A'; break;
61 }
62 } else {
63 cout << nd[i].num;
64 }
65 cout << nd[i].color << " ";
66 }
67 return 0;
68 }
上一篇: Scala 字符串
下一篇: 最近几天睡前都要玩 3 局蜘蛛纸牌。
推荐阅读