牛牛纸牌

题目描述

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;
} 

你可能感兴趣的:(牛牛纸牌)