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
这是一个稍微有点坑的模拟题
如果直接sort排序Q比K大但是在纸牌里面K比Q大所以我们需要写一个排序规则
int pz(string s){
if(s=="A")return 1;
else if(s=="2")return 2;
else if(s=="3")return 3;
else if(s=="4")return 4;
else if(s=="5")return 5;
else if(s=="6")return 6;
else if(s=="7")return 7;
else if(s=="8")return 8;
else if(s=="9")return 9;
else if(s=="10")return 10;
else if(s=="J")return 11;
else if(s=="Q")return 12;
else if(s=="K")return 13;
}
其次 如果用char的话我们还有输入10 所以这里我们得用string数组
然后在开int 数组去保存纸牌的值
int p(string s){
if(s=="A")return 1;
else if(s=="2")return 2;
else if(s=="3")return 3;
else if(s=="4")return 4;
else if(s=="5")return 5;
else if(s=="6")return 6;
else if(s=="7")return 7;
else if(s=="8")return 8;
else if(s=="9")return 9;
else if(s=="10")return 10;
else if(s=="J")return 10;
else if(s=="Q")return 10;
else if(s=="K")return 10;
}
最后就是计算牛牛 用三个for去进行暴力循环找最大牛
这里我们需要注意的是初值不能为0 因为没牛和牛牛的时候都是0
我们需要将初值设为-1 如果是0就返回10代表牛牛
int nn(int n[],int ss){
int maxn=-1;
for(int i=0;i<3;i++){
for(int j=i+1;j<4;j++){
for(int k=j+1;k<5;k++){
if((n[i]+n[j]+n[k])%10==0){
maxn=max(maxn,(ss-n[i]-n[j]-n[k])%10);
}
}
}
}
if(maxn==0)maxn=10;
return maxn;
}
#include
using namespace std;
string a[5];
string b[5];
int aa[5];
int bb[5];
int an,bn;
int az,bz;
int pz(string s){
if(s=="A")return 1;
else if(s=="2")return 2;
else if(s=="3")return 3;
else if(s=="4")return 4;
else if(s=="5")return 5;
else if(s=="6")return 6;
else if(s=="7")return 7;
else if(s=="8")return 8;
else if(s=="9")return 9;
else if(s=="10")return 10;
else if(s=="J")return 11;
else if(s=="Q")return 12;
else if(s=="K")return 13;
}
int p(string s){
if(s=="A")return 1;
else if(s=="2")return 2;
else if(s=="3")return 3;
else if(s=="4")return 4;
else if(s=="5")return 5;
else if(s=="6")return 6;
else if(s=="7")return 7;
else if(s=="8")return 8;
else if(s=="9")return 9;
else if(s=="10")return 10;
else if(s=="J")return 10;
else if(s=="Q")return 10;
else if(s=="K")return 10;
}
int nn(int n[],int ss){
int maxn=-1;
for(int i=0;i<3;i++){
for(int j=i+1;j<4;j++){
for(int k=j+1;k<5;k++){
if((n[i]+n[j]+n[k])%10==0){
maxn=max(maxn,(ss-n[i]-n[j]-n[k])%10);
}
}
}
}
if(maxn==0)maxn=10;
return maxn;
}
int cmp(string a,string b){
return pz(a)>pz(b);
}
int main(){
while(cin>>a[0]){
az=bz=0;
aa[0]=p(a[0]);
az=aa[0];
for(int i=1;i<5;i++){
cin>>a[i];
aa[i]=p(a[i]);
az+=aa[i];
}
for(int i=0;i<5;i++){
cin>>b[i];
bb[i]=p(b[i]);
bz+=bb[i];
}
an=nn(aa,az);
bn=nn(bb,bz);
sort(a,a+5,cmp);
sort(b,b+5,cmp);
if(an>bn){
cout<<"LZY"<<endl;
}else if(an<bn){
cout<<"WLJ"<<endl;
}else if(an==bn){
int f=0;
for(int i=0;i<5;i++){
if(pz(a[i])>pz(b[i])){
f=1;
break;
}else if(pz(a[i])<pz(b[i])){
f=2;
break;
}else continue;
}
if(f==0)cout<<"level"<<endl;
else if(f==1)cout<<"LZY"<<endl;
else cout<<"WLJ"<<endl;
}
}
return 0;
}