LZY的游戏(YYOJ)

题目描述

LZY发明了一个纸牌游戏,取名叫做LZY牛牛。他的好伙伴WLJ对这个游戏很感兴趣,于是他们俩玩起了这个游戏。

每人抽取五张扑克牌,牌堆里的扑克牌有 A,2,3,4,5,6,7,8,9,10,J,Q,K 这13种点数的扑克牌若干。

扑克牌 10,J,Q,K都视为点数 10,扑克牌 A 视为点数 1,其他牌数字为多少则点数为多少。

当我们能从五张中挑选3张相加,使得他能被10整除,那么称之为“牛”,再把剩下的两张相加,取10的余数为Y,当Y值为0的时候,称为“牛牛”,否则为“牛Y”。若无法挑选到3张牌相加能被10整除,则为“无牛”。

规则如下:

大小判断 先判断是否有牛,牛牛>牛9>牛8>牛7>牛6>牛5>牛4>牛3>牛2>牛1>无牛。

当牛相同时,判断牌面大小,从大到小判断,若相同,判断后一张,直到出现有一张不同或五张全相同,牌面大小 K>Q>J>10>9>8>7>6>5>4>3>2>A。

若LZY赢则输出“LZY”,LZY输则输出“WLJ”,平局输出“level”。

输入

输入有多组样例,每组样例先输入LZY的五张牌,再输入WLJ的五张牌。

输出

若LZY赢则输出“LZY”,LZY输则输出“WLJ”,平局则输出“level”。

样例输入

8 3 J K 2
A 2 3 4 5
8 5 J K 2
A 2 3 4 5

样例输出

WLJ
LZY
代码

#include<bits/stdc++.h>
using namespace std;
bool cmp(int a,int b){//从大到小排序
 return a>b;
}
int main(){
    ios::sync_with_stdio(false);
 char a[5][2];//输入的基础字符
 char b[5][2];//输入的基础字符
 int a1[5];//判断牛牛 
 int b1[5];//判断牛牛
 int a2[5];//判断卡牌大小 
 int b2[5];//判断卡牌大小 
 while(~scanf("%s%s%s%s%s%s%s%s%s%s",&a[0],&a[1],&a[2],&a[3],&a[4],&b[0],&b[1],&b[2],&b[3],&b[4])){
  //cin>>a[0]>>a[1]>>a[2]>>a[3]>>a[4]>>b[0]>>b[1]>>b[2]>>b[3]>>b[4]
  //~scanf("%s%s%s%s%s%s%s%s%s%s",&a[0],&a[1],&a[2],&a[3],&a[4],&b[0],&b[1],&b[2],&b[3],&b[4])
  int max=0,min=0;
  for(int i=0;i<5;i++){//转化为数值 赋值给a1,a2,b1,b2
   if(a[i][0]=='A') a1[i]=1,a2[i]=1; 
   if(a[i][0]=='2') a1[i]=2,a2[i]=2;
   if(a[i][0]=='3') a1[i]=3,a2[i]=3;
   if(a[i][0]=='4') a1[i]=4,a2[i]=4;
   if(a[i][0]=='5') a1[i]=5,a2[i]=5;
   if(a[i][0]=='6') a1[i]=6,a2[i]=6;
   if(a[i][0]=='7') a1[i]=7,a2[i]=7;
   if(a[i][0]=='8') a1[i]=8,a2[i]=8;
   if(a[i][0]=='9') a1[i]=9,a2[i]=9;
   if(a[i][0]=='1'&&a[i][1]=='0') a1[i]=10,a2[i]=10;
   if(a[i][0]=='J') a1[i]=10,a2[i]=11;
   if(a[i][0]=='Q') a1[i]=10,a2[i]=12;
   if(a[i][0]=='K') a1[i]=10,a2[i]=13;
   if(b[i][0]=='A') b1[i]=1,b2[i]=1; 
   if(b[i][0]=='2') b1[i]=2,b2[i]=2;
   if(b[i][0]=='3') b1[i]=3,b2[i]=3;
   if(b[i][0]=='4') b1[i]=4,b2[i]=4;
   if(b[i][0]=='5') b1[i]=5,b2[i]=5;
   if(b[i][0]=='6') b1[i]=6,b2[i]=6;
   if(b[i][0]=='7') b1[i]=7,b2[i]=7;
   if(b[i][0]=='8') b1[i]=8,b2[i]=8;
   if(b[i][0]=='9') b1[i]=9,b2[i]=9;
   if(b[i][0]=='1'&&b[i][1]=='0') b1[i]=10,b2[i]=10;
   if(b[i][0]=='J') b1[i]=10,b2[i]=11;
   if(b[i][0]=='Q') b1[i]=10,b2[i]=12;
   if(b[i][0]=='K') b1[i]=10,b2[i]=13; 
  }
  for(int i=0;i<5;i++){//凑牛头的第一张牌
   for(int j=0;j<5&&j!=i;j++){//凑牛头的第二张牌
    for(int z=0;z<5&&z!=i&&z!=j;z++){//凑牛头的第二张牌
     if((a1[i]+a1[j]+a1[z])%10==0){//判断是否有牛
      if((a1[0]+a1[1]+a1[2]+a1[3]+a1[4])%10==0)//判断是否是牛牛
       max=10;
      if(((a1[0]+a1[1]+a1[2]+a1[3]+a1[4])%10)>max){//判断是牛几
        max=(a1[0]+a1[1]+a1[2]+a1[3]+a1[4])%10;
      } 
     }
     if((b1[i]+b1[j]+b1[z])%10==0){//判断是否有牛
      if((b1[0]+b1[1]+b1[2]+b1[3]+b1[4])%10==0)//判断是否是牛牛
       min=10; 
      if(((b1[0]+b1[1]+b1[2]+b1[3]+b1[4])%10)>min){//判断是牛几
        min=(b1[0]+b1[1]+b1[2]+b1[3]+b1[4])%10;
      } 
     }
    }
   }
  }
  //cout << max << endl << min <<endl;
  if(max>min)//判断谁的牛大
   cout<<"LZY"<<endl;
  else if(min>max)
   cout<<"WLJ"<<endl;
  else{
   sort(a2,a2+5,cmp);//快排
   sort(b2,b2+5,cmp);//快排
   for(int i=0;i<5;i++){//两人从最大的一张到最小的一张进行判断是否相等
    if(a2[i]>b2[i]){
     cout<<"LZY"<<endl;
     break;
    } 
    if(a2[i]<b2[i]){
     cout<<"WLJ"<<endl;
     break;
    } 
    if(i==4&&a2[i]==b2[i])//两人手牌完全相同
     cout<<"level"<<endl;
   }
  }
 memset(a,' ',sizeof(a));//清空数组a
 memset(b,' ',sizeof(b));//清空数组b
 }
 return 0 ;
}

思路

输入数据判断是否能组成牛
如果能组成,用for取最大牛
再判断谁的牛大
如果牛相同
判断手牌大小

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值