问题 B: 简单扑克牌游戏

题目描述

两个人玩简单扑克牌游戏,每人手里3张牌,每张牌的数字由1到9组成,花色包括ABCD四种,比较两手牌大小的规则由强到弱列举如下:
1、同花顺:3张牌花色相同,且数字连续,如1A 2A 3A , 如果两手牌都是同花顺,比较数字大小,数字大的赢
2、顺子:3张牌数字连续,但花色不同,如1A 2B 3C ,如果两手牌都是顺子,比较数字大小,数字大的赢
3、飞机:3张牌数字相同,如1A 1B 1C,如果两手牌都是飞机,比较数字大小,数字大的赢
4、同花:3张牌花色相同,如1A 3A 5A,如果两手牌都是同花,比较最大的数字大小,数字大的赢
5、对子:3张牌中有2张数字一样,如 1A 1B 2A,如果两手牌都是对子,则比较对子的数字大小,数字大的赢
5、杂牌:不满足上面的条件,如1A 5B 7C,如果两手牌都是杂牌,则比较最大的数字,大的赢

输入格式

输入包括多组测试数据,每组测试数据占一行,由6张牌组成,前三张牌属于zhangsan,后三张属于lisi

输出格式

对每组测试数据,判断输赢,如果zhangsan赢,输出zhangsan后换行,如果lisi赢,输出lisi后换行,如果平手输出tie后换行

输入样例 复制

1A 2A 3A 3B 4B 5B
1B 2A 3A 3C 6B 5B
5A 2A 3A 3B 3C 5B
2A 2B 3A 3B 3C 3D
1A 5A 7B 9B 1B 1B
1A 2A 5B 1A 3A 5C

输出样例 复制

lisi
zhangsan
zhangsan
lisi
lisi
tie

这道题说是简单扑克牌问题,确实很简单。
关键在于把最苛刻的条件放在最后,因为程序是由上而下执行的。

#include<iostream>
using namespace std;
struct puke{int n;char h;
}zs[3],ls[3]; //用了结构体来储存数据
int main(){int flag=-1; //判断谁赢,0张三,1李四,2平int t1,i;char t2;while(cin>>zs[0].n>>zs[0].h){for(i=1;i<3;i++){cin>>zs[i].n>>zs[i].h;} //读入张三的牌for(i=0;i<3;i++){cin>>ls[i].n>>ls[i].h;}//读入李四的牌if(zs[0].n>zs[1].n){ //对张三的牌从小到大排序t1=zs[0].n;zs[0].n=zs[1].n;zs[1].n=t1;t2=zs[0].h;zs[0].h=zs[1].h;zs[1].h=t2;}if(zs[1].n>zs[2].n){t1=zs[1].n;zs[1].n=zs[2].n;zs[2].n=t1;t2=zs[1].h;zs[1].h=zs[2].h;zs[2].h=t2;}if(zs[0].n>zs[1].n){t1=zs[0].n;zs[0].n=zs[1].n;zs[1].n=t1;t2=zs[0].h;zs[0].h=zs[1].h;zs[1].h=t2;}if(ls[0].n>ls[1].n){ //对李四的牌从小到大排序t1=ls[0].n;ls[0].n=ls[1].n;ls[1].n=t1;t2=ls[0].h;ls[0].h=ls[1].h;ls[1].h=t2;}if(ls[1].n>ls[2].n){t1=ls[1].n;ls[1].n=ls[2].n;ls[2].n=t1;t2=ls[1].h;ls[1].h=ls[2].h;ls[2].h=t2;}if(ls[0].n>ls[1].n){t1=ls[0].n;ls[0].n=ls[1].n;ls[1].n=t1;t2=ls[0].h;ls[0].h=ls[1].h;ls[1].h=t2;}if(zs[2].n>ls[2].n)flag=0;//默认都是杂牌比一下最大牌else if(zs[2].n<ls[2].n)flag=1;else if(zs[2].n==ls[2].n)flag=2;if(zs[0].n==zs[1].n||zs[1].n==zs[2].n){//如果张三是对子 if(ls[0].n==ls[1].n||ls[1].n==ls[2].n){//如果李四也是对子 if(zs[1].n>ls[1].n)flag=0;//比较else if(zs[1].n<ls[1].n)flag=1;else if(zs[1].n==ls[1].n)flag=2;}else flag=0;//如果张三是对子,李四不是对子,张三赢}else if((ls[0].n==ls[1].n||ls[1].n==ls[2].n)&&(zs[0].n!=zs[1].n&&zs[1].n!=zs[2].n)){flag=1;//如果李四是对子张三不是,李四赢} if(zs[0].n==zs[1].n&&zs[1].n==zs[2].n){//张三是飞机if(ls[0].n==ls[1].n&&ls[1].n==ls[2].n){//如果李四也是飞机,比较if(zs[2].n>ls[2].n)flag=0;else if(zs[2].n<ls[2].n)flag=1;else if(zs[2].n==ls[2].n)flag=2;}else{//如果李四不是飞机,张三赢flag=0;}}else if((ls[0].n==ls[1].n&&ls[1].n==ls[2].n)&&(zs[0].n!=zs[1].n||zs[1].n!=zs[2].n)){//李四是飞机张三不是,李四赢flag=1;}if(zs[0].n+1==zs[1].n&&zs[1].n+1==zs[2].n){//张三是顺子 if(ls[0].n+1==ls[1].n&&ls[1].n+1==ls[2].n){//如果李四也是顺子,比较if(zs[2].n>ls[2].n)flag=0;else if(zs[2].n<ls[2].n)flag=1;else if(zs[2].n==ls[2].n)flag=2;}else flag=0;//李四不是顺子,张三赢}else{if(ls[0].n+1==ls[1].n&&ls[1].n+1==ls[2].n){//李四是顺子张三不是顺子,李四赢flag=1;}}if(zs[0].h==zs[1].h&&zs[1].h==zs[2].h){//张三是同花 if(ls[0].h!=ls[1].h||ls[1].h!=ls[2].h){//李四不是同花,张三赢flag=0;}else{//李四也是同花 if(zs[0].n+1==zs[1].n&&zs[1].n+1==zs[2].n){//张三是同花顺 if(ls[0].n+1==ls[1].n&&ls[1].n+1==ls[2].n){//李四也是同花顺 if(ls[0].n>zs[0].n)flag=1; //比较大小 else if(ls[0].n==zs[0].n)flag=2;else if(ls[0].n<zs[0].n)flag=0;}else {//张三是同花顺李四不是 flag=0; }}else if(ls[0].n+1==ls[1].n&&ls[1].n+1==ls[2].n){//李四是同花顺张三不是 flag=1;}else{//张三李四都只是同花而不是同花顺则比较最大数 if(zs[2].n>ls[2].n)flag=0;else if(zs[2].n<ls[2].n)flag=1;else if(zs[2].n==ls[2].n)flag=2;}}}if(flag==0)cout<<"zhangsan"<<endl;if(flag==1)cout<<"lisi"<<endl;if(flag==2)cout<<"tie"<<endl;}return 0;
}

问题D: 该谁发球了?

题目描述

乒乓球是一项很受国人欢迎的运动,假设A和B对打,每次都是A先发球,那么乒乓球的发球规则如下:
1、一方得11分,另一方得分小于等于9分,比赛结束,前者获胜;
2、如果出现10:10的比分,那么比赛进入延长赛,双方轮流发一次球,当分差是2分时比赛结束,得分多者获胜;
3、其它情况,双方轮流发2次球;
请编写程序,根据当前比分判断该谁发球了?

输入格式

输入包括多行数据,每行数据包括两个正整数a和b,代表A和B在乒乓球比赛中的比分,0<=a,b<=100
输出格式
针对每行输入,输出接下来的发球方是A还是B?如果比赛结束,输出Game Over

输入样例 复制

0 0
0 2
11 9

输出样例 复制

A
B
Game Over

这道题只需要注意什么叫轮流发两次球。轮流发一次球是A发一次B发一次,轮流发两次球是A发两次然后B发两次。

#include<iostream>
#include<cmath>
using namespace std;
int main(){int a,b;int flag;  //0代表A发球,1代表B发球,2代表Game Overwhile(cin>>a>>b){flag=-1;if(a==11&&b<=9){flag=2;}else if(b==11&&a<=9){flag=2;}else if(a>=10&&b>=10){if(fabs(a-b)==2){flag=2;}else{if((a+b)%2==0){flag=0;}else flag=1;}}else {if((a+b)/2%2==0){flag=0;}else flag=1;}if(flag==0)cout<<"A"<<endl;else if(flag==1)cout<<"B"<<endl;else if(flag==2)cout<<"Game Over"<<endl;}return 0;
}

buctoj-2022寒假集训4相关推荐

  1. 2023寒假集训通知

    各位家长,各位同学,新年好! 过去的2022是我们编程学习,算是比较成功的一年.大家跟着我们的团队进行了约一年的培训,很有收获.纵观全年: 1.寒假我们认真集训了24天 2.三四月间参加了人工智能学会 ...

  2. 寒假集训总结 (1.23~1.28) [第一梯队]

    Day 1. 分治算法入门 一.分治法概述 分治法的设计思想 对于一个规模为 n n n的问题:若该问题可以容易地解决(比如说规模 n n n较小)则直接解决,否则将其分解为 k k k个规模较小的子 ...

  3. DP\记忆化搜索-牛客寒假集训营3-牛牛的DRB迷宫I

    DP-牛客寒假集训营3-牛牛的DRB迷宫I 题目: 题意: 求迷宫问题的方案数量.与--求迷宫问题的方案数量.与--求迷宫问题的方案数量.与--DP题型总结中的<摘花生>类似.中的< ...

  4. 构造-牛客寒假集训营3-牛牛的DRB迷宫II

    构造-牛客寒假集训营3-牛牛的DRB迷宫II 题目: 题意: 输入一个数字,表示从起点(1,1)到终点(n,m)的方案数量,输出满足条件的迷宫.输入一个数字,表示从起点(1,1)到终点(n,m)的方案 ...

  5. 关于构造和二进制,题目:牛牛的DRB迷宫Ⅱ(源自牛客竞赛2020年寒假集训)

    关于构造和二进制,题目:牛牛的DRB迷宫Ⅱ(源自牛客竞赛2020年寒假集训) 题目: 链接:https://ac.nowcoder.com/acm/contest/3004/B 来源:牛客网 题目描述 ...

  6. 2019NEFU寒假集训新生考试 2020.1.6

    2019NEFU寒假集训新生考试 2020.1.6 为期一周的的培训终于面临尾声,就以一场考试告终吧. A 28的因子 Description 我们都知道28的因子中含有4和7,而某些人偏爱数字4和7 ...

  7. 题223.2022寒假天梯赛训练-7-12 清点代码库 (25 分)

    文章目录 题223.2022寒假天梯赛训练-7-12 清点代码库 (25 分) 一.题目 二.题解 题223.2022寒假天梯赛训练-7-12 清点代码库 (25 分) 一.题目 二.题解 我这个做法 ...

  8. 大一寒假集训(11)(12)---map,set

    大一寒假集训(11)-map 1.查字典 nefu 1678 #include <bits/stdc++.h> using namespace std; map<string,int ...

  9. CF 2022寒假练习

    CF 2022寒假练习 CF_2A Winner 链接 CF_2A Winner 题目大意 有一个游戏,由nnn个玩家参与,每一轮会有一个玩家获得sss点数.游戏最后一轮结束后,点数最多的玩家获胜.如 ...

  10. 寒假集训三(暴力枚举)2020.01.02(11题)

    寒假集训三(暴力枚举)id :521 Problem:A 二倍的问题 Description 给定2到15个不同的正整数,你的任务是计算这些数里面有多少个数对满足:数对中一个数是另一个数的两倍.比如给 ...

最新文章

  1. Android 源码分析之 EventBus 的源码解析
  2. 只有2GB内存在20亿个整数中找到出现次数最多的数
  3. document.domain ajax,PHP ajax跨子域的解决方案之document.domain+iframe实例分析
  4. scikit-learn 梯度提升树(GBDT)调参小结
  5. Micro-CMS v2(持续更新中)
  6. 原始dao和Mapper动态代理的开放方式---Mybatis学习笔记(六)
  7. 【渝粤题库】陕西师范大学500004 电动力学
  8. java roundingmode.UP,即使明确设置,DecimalFormat也使用不正确的RoundingMode
  9. c替换指定位置字符串_【JavaScript】字符串
  10. Git master branch has no upstream branch的解决
  11. LINUX FFMPEG编译详细过程记录(最全)
  12. [加壳脱壳] VMP壳原理简介
  13. flash读写学习笔记与spi接口及简单测试验证
  14. java程序设计大赛acm_转载(ACM国际大学生程序设计大赛)
  15. 关于一台电脑控制多台手机技术分享被恶意转载的声明
  16. excel多列合并关联数据
  17. Sql Server中进行查询操作时提示“对象名无效”
  18. 2018年宇视科技智能交通-嵌入式软件开发线上笔试题
  19. CentOS 查看登陆成功和登陆失败日志
  20. 2020 校招,我是如何拿到小米、京东、字节大厂前端offer

热门文章

  1. 锵锵三人行:AWS,下个路口见
  2. mac使用hbuilderx安卓模拟器调试app
  3. java五子棋棋盘_java绘制五子棋棋盘代码示例
  4. 2020年国考申论备考:评价类(观点)题和理解类题目的辨析
  5. 为什么PDF文件无法编辑?
  6. YOLO中MAP的具体计算
  7. Python飞机大战(究极迫害版)
  8. 未来链上跨境支付、融资领域龙头 Tribal 的发展与机遇
  9. 安卓 阿拉伯语显示时文字的适配
  10. C/C++编程:写了placement new也要写placement delete