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

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

 题目描述:

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

 桥牌使用的是去掉大小王的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


目录
相关文章
|
3月前
|
存储 API Android开发
"解锁Android权限迷宫:一场惊心动魄的动态权限请求之旅,让你的应用从平凡跃升至用户心尖的宠儿!"
随着Android系统的更新,权限管理成为应用开发的关键。尤其在Android 6.0(API 级别 23)后,动态权限请求机制的引入提升了用户隐私保护,要求开发者进行更精细的权限管理。
79 2
|
5月前
|
测试技术
ACL 2024:大模型性能掺水严重?北大交出答卷:交互评估+动态出题,死记硬背也没用
【7月更文挑战第8天】北大研究团队推出KIEval框架,针对大语言模型(LLMs)的性能评估进行创新。KIEval采用互动评估和动态出题,通过多轮基于知识的对话测试模型理解和应用能力,旨在减少数据污染影响,挑战死记硬背的评估。然而,该方法可能增加计算需求,且评估结果可能受主观因素影响,不适用于所有类型LLMs。[论文链接:](https://arxiv.org/abs/2402.15043)**
103 24
拯救地球精英答案【逻辑题】
拯救地球精英答案【逻辑题】
70 0
|
小程序
如何做一个俄罗斯方块7:消除判断和处理
嗨!大家好,我是小蚂蚁。今天我们继续来了解下一个环节:消除判断和处理。因为消除判断和消除处理都比较简单,所以,这里我们就将这两个环节合并在一起讲解。
183 0
|
Java
手把手一步一步教你使用Java开发一个大型街机动作闯关类游戏19敌人可以被打死
手把手一步一步教你使用Java开发一个大型街机动作闯关类游戏19敌人可以被打死
152 0
|
算法 C++
蓝桥杯试题 算法训练 绘制地图 C/C++解法 AC(最近,WYF正准备参观他的点卡工厂。WYF集团的经理氰垃圾需要帮助WYF设计参“观”路线。现在,氰垃圾知道一下几件事情。。。。)
蓝桥杯试题 算法训练 绘制地图 C/C++解法 AC(最近,WYF正准备参观他的点卡工厂。WYF集团的经理氰垃圾需要帮助WYF设计参“观”路线。现在,氰垃圾知道一下几件事情。。。。)
120 0
L2-029 特立独行的幸福 (25 分)(数组模拟)
L2-029 特立独行的幸福 (25 分)(数组模拟)
133 0
|
存储
L2-028 秀恩爱分得快 (25 分)(模拟)
L2-028 秀恩爱分得快 (25 分)(模拟)
204 0
算法每日一题——第七天——消除游戏
算法每日一题——第七天——消除游戏
算法每日一题——第七天——消除游戏
7-24 悄悄关注 (10 分)
7-24 悄悄关注 (10 分)
132 0

热门文章

最新文章