大家好,欢迎来到IT知识分享网。
三张牌比大小
由于两个同学学习了很久,想要打牌放松一下,但是他们两个眼睛有点花了,看不清牌的花色,只看得清牌的点数。所以他们改良了一了规则。
规则如下:
1.不分花色,只有牌的点数(2-10)
2.每个人三张牌,一共有4种牌型,按牌型大小排序如下:
(1)三同:三张牌点数相同,如6 6 6,8 8 8
(2)顺子:三张牌点数连续,如3 4 5,5 6 7
(3)对子:两张牌点数相同,另一张不同,如2 3 3,7 7 8
(4)单牌:三张牌点数都不同,且不连续,如2 3 5,9 4 7
3.牌型不同则牌型大的赢,否则按如下规则比较:
(1)三同:直接比较大小,如果相同则平局
(2)顺子:比较最大点数的大小,如果相同则平局
(3)对子:比较对子的大小,如果相同比较单牌的大小,如果都相同则平局
(4)单牌:先比较最大的牌,如果相同比较第二大的牌,如果相同则比较最小的牌,如果都相同则平局
你作为裁判需要判断谁是胜利者。
输入描述:
第一行输入一个整数t,代表有t组测试数据,
对于每组测试数据,
输入连续6个整数,a,b,c,d,e,f,其中a,b,c代表benTuTuT的牌,其中d,e,f代表XXL的牌
1<=t<=1000
2<=a,b,c,d,e,f<=10
输出描述:
对于每组测试数据,如果benTuTuT胜利则输出”benTuTuT win!”,如果XXL胜利则输出”XXL win!”,否则输出”No winner!”
并且对于每组数据,答案占单独的一行。
PS:请输出双引号内的所有内容,并且请勿输出双引号!
输入示例:
7 2 3 4 3 4 5 3 3 3 6 6 6 2 3 5 2 3 6 2 2 3 2 2 4 10 10 9 2 3 4 2 2 2 8 9 10 7 7 7 7 7 7
输出示例
XXL win! XXL win! XXL win! XXL win! XXL win! benTuTuT win! No winner!
- 牌型优先
- 相同牌型从最大的一张比到最小的一张(牌型为对子时存在对子的数字小,单张的数字大的情况,就存在一二对子和二三对子两种情况,同牌型两种情况的比较,可以一三换位,保证对子都在二三)
因此可以用一个排序函数将牌从小到大理顺,
牌型最大的每张牌加上30,次大的加上20……
这样牌型大的就对牌型小的有绝对优势
2.三个整数比大小的简便方法:
if(a>b)t=a,a=b,b=c; if(b>c)t=b,b=c,c=t; if(a>b)t=a,a=b,b=c;
代码如下
#include<stdio.h> int order(int a[]) {
int t; if(a[0]>a[1])t=a[0],a[0]=a[1],a[1]=t; if(a[1]>a[2])t=a[1],a[1]=a[2],a[2]=t; if(a[0]>a[1])t=a[0],a[0]=a[1],a[1]=t; //根据牌型的大小,给不同的牌型加相应的10的倍数 if(a[0]==a[1]&&a[0]==a[2]) a[0]=a[0]+30, a[1]=a[1]+30, a[2]=a[2]+30; //对子在排好序后,有二三对子,一二对子 //一二的情况,对子的数字小,但优先级高,所以变成二三对子 if(a[0]==a[1]&&a[0]!=a[2]) t=a[0]+10, a[0]=a[2]+10, a[2]=t; if(a[1]==a[0]+1&&a[2]==a[1]+1) a[0]=a[0]+20, a[1]=a[1]+20, a[2]=a[2]+20; } int battle(int a[],int b[]) {
int i; int count =0; //分出胜负则离开循环,a胜返回1,b胜返回-1, //若循环走完仍未break,则返回初始值0,平局 for(i=2;i>=0;i--) {
if(a[i]>b[i]) {
count=1; break; } else if(a[i]<b[i]) {
count=-1; break; } } return count; } int main() {
int n; scanf("%d",&n); //数组a,b为二人手牌,c为比较的结果 int a[3],b[3],c[n]; int i,j; for(i=0;i<n;i++) {
scanf("%d %d %d",&a[0],&a[1],&a[2]); scanf("%d %d %d",&b[0],&b[1],&b[2]); order(a); order(b); c[i]=battle(a,b); } for(i=0;i<n;i++) {
if(c[i]==1) printf("benTuTuT win!\n"); else if(c[i]==-1) printf("XXL win!\n"); else printf("No winner!\n"); } }
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/157180.html