首页 > 分享 > (题解)7

(题解)7

题目描述:

现在有一种牌的玩法如下:共36张牌,牌点为2-10,每样4张。两个人玩,每人从所有牌中取两张,然后比较大小,大的方获胜。

比较大小规则如下。 1、两张牌的总牌点值为两张牌的各自牌点值相加后除以10的余数,如一张5一张6,则总牌点为1; 2、比较大小时,比较的是总牌点儿。也就是说总牌点大的一方获胜; 3、当总牌点相等时,则看牌点最大的单张,牌点大的获胜。如一张3一张6胜过一张4一张5; 4、如果两张牌的牌点相等(对子),则不计总牌点,它们一定胜过所有非对子的组合; 5、对子和对子比较,按单张牌点比大小,如对8胜过对7。 6、如果两个人的牌完全一样,则是平局。
现请你写一段程序来判断两个玩家的胜负。

输入格式:

只有一行,为4个字符,前两个代表A的牌,后两个代表B的牌(字符’T’,代表10)。

输出格式:

只有一行,先输出获胜者(两人的牌完全一样时,按A胜输出),然后是一个冒号,最后是牌面(如果是对子,则输出代表单张牌的字符,否则输出总牌点数)。

输入样例:

样例一:
3645
样例二:
85T3
样例三
3455

输出样例:

样例一:
A:9
样例二:
B:3
样例三:
B:5

分析:

题目类型是分情况讨论,没有涉及算法及数据结构

代码实现:

#include<stdio.h> int main() {char m,n,j,k; //A的牌:m,n;B的牌:j,kint t;int a,b,c,d; //A各自牌点值:a,b;B各自牌点值:c,dscanf("%c%c%c%c",&m,&n,&j,&k);(m=='T')?(a=10):(a=m-'0');(n=='T')?(b=10):(b=n-'0');(j=='T')?(c=10):(c=j-'0');(k=='T')?(d=10):(d=k-'0');if(a==b||c==d){if(a==b&&c==d) //对子和对子比较{if(a>=c){if(a==10) printf("A:Tn");else printf("A:%cn",m); //输出代表单张牌的字符}else{if(c==10) printf("B:Tn");else printf("B:%cn",j);}}if(c!=d) //A的牌是对子,B的牌是非对子{if(a==10) printf("A:Tn");else printf("A:%cn",m);}if(a!=b) //A的牌是非对子,B的牌是对子{if(c==10) printf("B:Tn");else printf("B:%cn",j);}}else //A,B的牌都是非对子{if((a+b)%10!=(c+d)%10) //总牌点不相等{if((a+b)%10>(c+d)%10) printf("A:%dn",(a+b)%10); //输出总牌点值else printf("B:%dn",(c+d)%10);}else //总牌点相等{if(a<b){t=b;b=a;a=t;}if(c<d){t=d;d=c;c=t;}if((a==c&&b==d)||(a>c)){printf("A:%dn",(a+b)%10);}if(a<c){printf("B:%dn",(c+d)%10);}}}return 0; }

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970'

相关知识

菩提道次第广论题解
(题解)7
【题解】应急响应靶机训练
NOIP2004 花生采摘 题解
======题解======
题解
[护网训练]原创应急响应靶机整理集合
[护网训练]应急响应靶机整理
===动态规划===
Python Leetcode(905.按奇偶排序数组)

网址: (题解)7 https://m.mcbbbk.com/newsview671536.html

所属分类:萌宠日常
上一篇: 人类对末世的想象,都在这10本书
下一篇: 模板来设计模板函数和模板类