小明特别喜欢打扑克牌,除了喜欢斗地主和德州扑克之外,还喜欢一种叫桥牌的游戏,桥牌的具体规则相当复杂,有叫牌、打牌和计分三个阶段,还有不断变化的局况,局况可能影响叫牌打牌策略。但是小明暂时不关心这一些,

简介: 小明特别喜欢打扑克牌,除了喜欢斗地主和德州扑克之外,还喜欢一种叫桥牌的游戏,桥牌的具体规则相当复杂,有叫牌、打牌和计分三个阶段,还有不断变化的局况,局况可能影响叫牌打牌策略。但是小明暂时不关心这一些,

 题目描述:

 小明特别喜欢打扑克牌,除了喜欢斗地主和德州扑克之外,还喜欢一种叫桥牌的游戏,桥牌的具体规则相当复杂,有叫牌、打牌和计分三个阶段,还有不断变化的局况,局况可能影响叫牌打牌策略。但是小明暂时不关心这一些,他需要一个记牌器,记录其他三家打了哪一些牌,以便其制定策略。

 桥牌使用的是去掉大小王的52张扑克牌,牌共有4个花色,分别是草花、方片、红心、黑桃,每一种花色有13张牌,点数分别是A、2、3、4、5、6、7、8、9、10、J、Q、K。在本题中,我们用字母来表示花色,具体说S是黑桃,H是红心,D是方片,C是草花,同时我们用T表示10点。

 桥牌的打牌阶段比较简单,总共4个玩家,每一个玩家手上有13张牌,每一次从某一家开始(具体从哪一家开始的规定也比较繁琐,本题不展开)顺时针出牌;总共13轮,每一轮每一个玩家只能出一张。小明要做的就是在每一轮结束之后记录已经出过哪一些牌,并且在k轮之后询问所有剩余的牌。本题中所有的牌面表示都是两个字母,第一个字母是点数,第二个字母是花色。

【输入形式】

 输入包括一组数据,第一行是一个整数k(1<=k<=12),表示小明想知道前k轮之后剩余哪一些牌,然后跟着k行,每行四个字符串,分别表示这一轮中四家出的牌,每一个字符串第一个字符表示点数,第二个字符表示花色,例如:9S表示黑桃9,KD表示方块K,TH表示红心10。

【输出形式】

输出经过k轮出牌之后还剩余哪一些牌,每一张牌用两个字符表示,第一个是点数,第二个是花色。输出时首先按照黑桃、红心、方片、草花的顺序输出,花色一样的按照点数大小从小到大输出,其中输出的时候我们认为A、2、3、4、5、6、7、8、9、10、J、Q、K是依次递增的,具体细节见输出样例。

【样例输入】

7

3D 5D 9D AD

4S 5S TS KS

8S 9S 2S AS

6S 8D KD 2D

7C 3C 6C KC

AC TC 2C 5H

8H 3H TH AH

【样例输出】

3S 7S JS QS 2H 4H 6H 7H 9H JH QH KH 4D 6D 7D TD JD QD 4C 5C 8C 9C JC QC

【样例说明】

7轮之后,剩余的牌按顺序输出的结果就是样例输出,可以验证已经出的牌和还剩余的牌加起来是去掉大小王的一副扑克牌。

【评分标准】

对于20%的数据: n=1,且保证四家所出的牌花色相同

对于50%的数据:n=1

对于100%的数据:1<=n<=12,并且保证列出来的牌不重复。

因为本题只是验证记牌器的功能正确,所以数据中出牌记录不保证符合桥牌的出牌规则,如果不理解这句话请忽略,不影响做出正确结果。

时间限制:1s

空间限制:64MB

代码如下:

#include <iostream>
#include <cstring>
using namespace std;
int main(){
  int a[5][14];
  for(int i=1;i<=4;i++){
    for(int j=1;j<=13;j++){
      a[i][j]=0;
    }
  }
  int n;cin>>n;//第n轮
  /*string s;cin>>s;
  int b=s[0]-'0';
  cout<<b<<endl;
  */
  //*
  for(int i=0;i<n;i++){
    for(int j=0;j<4;j++){
      string s;cin>>s;
      int ColorFlag=0;
      char x=s[0];// 牌数  
      char y=s[1];//花色
      //cout<<x<<" "<<y<<endl;
      if(y=='S') ColorFlag=1;
      else if(y=='H') ColorFlag=2;
      else if(y=='D') ColorFlag=3;
      else if(y=='C') ColorFlag=4;
      //cout<<ColorFlag<<endl;
      if(x>='2' && x<='9') {
        int num=x-'0';
        a[ColorFlag][num]=1;
        //cout<<ColorFlag<<" "<<num<<" "<<a[ColorFlag][num]<<" ";
      }
      else if (x=='A')
        a[ColorFlag][1]=1;
      else if (x=='T')
        a[ColorFlag][10]=1;
      else if (x=='J')
        a[ColorFlag][11]=1;
      else if (x=='Q')
        a[ColorFlag][12]=1;       
      else if (x=='K')
        a[ColorFlag][13]=1;
    } 
}
  for(int i=1;i<=4;i++){
    for(int j=1;j<=13;j++){
      if(a[i][j]==0){
      if(j==1) cout<<"A";
      else if(j==10) cout<<"T";
      else if(j==11) cout<<"J";
      else if(j==12) cout<<"Q";
      else if(j==13) cout<<"K";
      else cout<<j;
      if(i==1)cout<<"S"<<" ";
      else if(i==2)cout<<"H"<<" ";
      else if(i==3)cout<<"D"<<" ";
      else if(i==4)cout<<"C"<<" ";
      }
    }
  }
  return 0;
}

image.gif


目录
相关文章
|
机器学习/深度学习 PyTorch 算法框架/工具
训练误差与泛化误差的说明
训练误差与泛化误差的说明
677 0
|
移动开发 小程序 JavaScript
uni-app 跨端开发注意事项
uni-app 跨端开发注意事项
703 0
SpringBoot导入和导出Csv文件(二十八)中
SpringBoot导入和导出Csv文件(二十八)中
3249 0
SpringBoot导入和导出Csv文件(二十八)中
|
存储 云安全 运维
腾讯云认证云从业者考试系列 腾讯云从业者认证考试内容、范围、 学习资料
本文列举腾讯云从业者认证的考试范围、知识点、分数比例、教程学习地址、一些官方资料文档。
1289 0
腾讯云认证云从业者考试系列 腾讯云从业者认证考试内容、范围、 学习资料
|
9月前
|
人工智能 自然语言处理 机器人
招商银行X通义大模型 ,2024年度AI最佳实践案例!
招商银行X通义大模型 ,2024年度AI最佳实践案例!
|
12月前
|
机器学习/深度学习 人工智能 自然语言处理
《C 语言赋能:粒子群优化神经网络训练之路》
神经网络是人工智能领域的明星,其训练过程至关重要。粒子群优化算法(PSO)结合C语言的高效特性,为神经网络训练提供了新的优化途径。本文介绍如何用C语言实现PSO算法,通过合理初始化粒子群、迭代优化粒子位置和速度,以及动态调整惯性权重等参数,提高神经网络的性能。尽管实现过程中存在挑战,但这种方法有望显著提升神经网络的准确性和泛化能力。
157 4
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤
【10月更文挑战第7天】本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据自身需求选择合适的方法。
468 3
|
机器学习/深度学习 人工智能 供应链
量子计算有哪些应用场景
量子计算有哪些应用场景
2512 6
|
Linux 运维 安全
linux内网机器访问外网代理设置squid
公司一般出于安全考虑, 在同一局域网中只有一台机器可以访问外网,运维进行了整体的限制, 但是在后面的工作中,需要在机器上安装一些软件,及命令,所以其他的机器需要访问外网来简化工作, 但又不能打乱原有运维的设置,所以需要在能访问外网的机器上做个代理。
2586 0