【每日例题】蓝桥杯 c++ 被替换的身份证

发布时间 2023-11-14 18:33:47作者: 山远尽成云

被替换的身份证

题目

蓝桥杯 被替换的身份证

思路分析

斗地主简化版?!废话少说,四种情况

  1. ShallowDream一开始出对子或者王炸,ShallowDream胜
  2. ShallowDream一开始出单,Joker出王炸,Joker胜
  3. ShallowDream一开始出单,Joker手中最大的牌比ShallowDream手中的牌都大,Joker胜
  4. ShallowDream一开始出单,Joker手中最大的牌小于ShallowDream的牌,ShallowDream

接下来差的就是给牌比大小与分情况作答

代码

#include <iostream>
#include<algorithm>
using namespace std;
char x[15]={'3','4','5','6','7','8','9','X','J','Q','K','A','2','M','F'};

int main()
{
  int t;
  cin>>t;
  while(t--)
  {
    string a,b;
    cin>>a>>b;
    int result=0;
    int c,d,i,j;//c记录先手最大的牌,d记录后手最大的牌
    if((a[0]==a[1])||(a[0]=='M'&&a[1]=='F')||(a[0]=='F'&&a[1]=='M'))
    {
        result=1;
    }
    else if((b[0]=='M'&&b[1]=='F')||(b[0]=='F'&&b[1]=='M'))
    {
        result=0;
    }
    else
    {
        for(i=0;i<15;i++)
        {
            if(x[i]==a[0])
            {
                c=i;
            }
            if(x[i]==b[0])
            {
                d=i;
            }
        }
        for(j=0;j<15;j++)
        {
            if(x[j]==a[1]&&j>c)
            {
                c=j;
            }
            if(x[j]==b[1]&&j>d)
            {
                d=j;
            }
        }
        if(c>=d)
        {
            result=1;
        }
    }
    if(result==1)
    {
        cout<<"ShallowDream"<<endl;
    }
    else
    {
        cout<<"Joker"<<endl;
    }
  }
  return 0;
}