P1018 锤子剪刀布
转跳点:
大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:
现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。
输入格式:
输入第 1 行给出正整数 N(≤105),即双方交锋的次数。随后 N 行,每行给出一次交锋的信息,即甲、乙双方同时给出的的手势。C
代表“锤子”、J
代表“剪刀”、B
代表“布”,第 1 个字母代表甲方,第 2 个代表乙方,中间有 1 个空格。
输出格式:
输出第 1、2 行分别给出甲、乙的胜、平、负次数,数字间以 1 个空格分隔。第 3 行给出两个字母,分别代表甲、乙获胜次数最多的手势,中间有 1 个空格。如果解不唯一,则输出按字母序最小的解。
输入样例:
10
C J
J B
C B
B B
B C
C C
C B
J B
B C
J J
输出样例:
5 3 2
2 3 5
B B
非宏定义
1 #include <stdio.h>
2 #include <stdlib.h>
3
4 int compared(int a, int b, int c);
5
6 int main()
7 {
8 int n;
9 char TypeMap[] = {'J', 'C', 'B'};
10 int Awin = 0, Bwin = 0, Nwin = 0;
11 int BJ = 0, BC = 0, BB = 0, AJ = 0, AC = 0, AB = 0;
12 char A, B;
13
14 scanf("%d\n", &n);
15
16 //开始统计各种次数
17 while (n--)
18 {
19 scanf("%c %c", &A, &B);
20
21 //偷懒求了B C J差值
22 //A赢的情况8 ,-7, -1
23 //B赢的情况-8, 7, 1
24 switch (A - B)
25 {
26 case 0: //平局
27 Nwin++;
28 break;
29 case 8: //J - B
30 Awin++;
31 AJ++;
32 break;
33 case -7: //C - J
34 Awin++;
35 AC++;
36 break;
37 case -1: //B - C
38 Awin++;
39 AB++;
40 break;
41 case -8: //B - J, 从这里往下乙赢
42 Bwin++;
43 BJ++;
44 break;
45 case 7: //J - B
46 Bwin++;
47 BC++;
48 break;
49 case 1: //C - B
50 Bwin++;
51 BB++;
52 break;
53 }
54 getchar();
55 }
56
57 int BigA = compared(AJ, AC, AB);
58 int BigB = compared(BJ, BC, BB);
59
60 printf("%d %d %d\n", Awin, Nwin, Bwin);
61 printf("%d %d %d\n", Bwin, Nwin, Awin);
62 printf("%c %c\n", TypeMap[BigA], TypeMap[BigB]);
63 return 0;
64 }
65
66 //三个数比大小
67 int compared(int a, int b, int c)
68 {
69 if (a > b)
70 {
71 if (a > c)
72 {
73 return 0;
74 }
75 else
76 {
77 return 2;
78 }
79 }
80 else
81 {
82 if (b > c)
83 {
84 return 1;
85 }
86 else
87 {
88 return 2;
89 }
90 }
91 }
三目运算
1 #include <stdio.h>
2 #include <stdlib.h>
3
4 //三目运算三个数比大小
5 #define cmp(a, b, c) a > b ? (a > c ? 0 : 2) : (b > c ? 1 : 2);
6
7 int main()
8 {
9 int n;
10 char TypeMap[] = {'J', 'C', 'B'};
11 int Awin = 0, Bwin = 0, Nwin = 0;
12 int BJ = 0, BC = 0, BB = 0, AJ = 0, AC = 0, AB = 0;
13 char A, B;
14
15 scanf("%d\n", &n);
16
17 while (n--)
18 {
19 scanf("%c %c", &A, &B);
20
21 switch (A-B)
22 {
23 case 0:Nwin++;break;
24 case 8:Awin++;AJ++;break;
25 case -7:Awin++;AC++;break;
26 case -1:Awin++;AB++;break;
27 case -8:Bwin++;BJ++;break;
28 case 7:Bwin++;BC++;break;
29 case 1:Bwin++;BB++;break;
30 }
31 getchar();//吞回车
32 }
33
34 int BigA = cmp(AJ, AC, AB);
35 int BigB = cmp(BJ, BC, BB);
36
37 printf("%d %d %d\n", Awin, Nwin, Bwin);
38 printf("%d %d %d\n",Bwin, Nwin, Awin);
39 printf("%c %c\n", TypeMap[BigA], TypeMap[BigB]);
40 return 0;
41 }
内联三目
不用宏也可以,直接写个函数也行,鬼知道,宏会不会被编译器优化
int cmp(char a, char b, char c) {return a > b ? (a > c ? 0 : 2) : (b > c ? 1 : 2);}
喜欢哪个用哪个吧
PAT不易,诸君共勉!
P1018 锤子剪刀布的更多相关文章
- PAT (Basic Level) Practise:1018. 锤子剪刀布
[题目链接] 大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算最大. 输入格式: 输入第1行 ...
- PAT乙级 1018. 锤子剪刀布 (20)
1018. 锤子剪刀布 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 大家应该都会玩“锤子剪刀布”的游 ...
- PAT-乙级-1018. 锤子剪刀布 (20)
1018. 锤子剪刀布 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 大家应该都会玩“锤子剪刀布”的游 ...
- PAT_1018 锤子剪刀布
问题描述 大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算最大. 输入格式: 输入第1行给出 ...
- B1018. 锤子剪刀布
大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算最大. 输入格式: 输入第1行给出正整数N( ...
- PAT 1018 锤子剪刀布
https://pintia.cn/problem-sets/994805260223102976/problems/994805304020025344 大家应该都会玩“锤子剪刀布”的游戏:两人同时 ...
- 牛客网 PAT 算法历年真题 1008 : 锤子剪刀布 (20)
锤子剪刀布 (20) 时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 大家应该都会玩“锤子剪刀布”的游戏:现给出 ...
- PAT 乙级 1018 锤子剪刀布 (20) C++版
1018. 锤子剪刀布 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 大家应该都会玩“锤子剪刀布”的游 ...
- PAT 1018 锤子剪刀布(20)
1018 锤子剪刀布 (20)(20 分) 大家应该都会玩"锤子剪刀布"的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方 ...
随机推荐
- HDU 5506:GT and set bitset+暴力
GT and set Accepts: 35 Submissions: 194 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 655 ...
- nosql概叙
关系型数据库管理系统:按照预先设置的组织架构,将数据存储在物理介质上 数据之间可以做关联操作
- mysql any和all的用法
1.ANY关键字假设any内部的查询语句返回的结果个数是三个,如:result1,result2,result3,那么, select ...from ... where a > any(. ...
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 辅助类:"text-primary" 类的文本样式
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- STM32学习笔记:IIC通信协议详解(附带软件模拟源码)
什么是IIC(I2C)? IIC 即Inter-Integrated Circuit(集成电路总线),这种总线类型是由飞利浦半导体公司设计出来的一种简单.双向.二线制.同步串行总线.它是一种多向控制总 ...
- C#遍历DataSet
] foreach (DataRow dr in dt.Rows) ///遍历所有的行 foreach (DataColumn dc in dt.Columns) //遍历所有的列 Console.W ...
- 手机连接jmeter录制脚本测试
1.准备条件 电脑安装好jmeter,准备好一个手机 注意: 电脑和手机连接的网络要一致 手机设置代理协议前要先进入想要抓取的网站: http://39.107.96.138:3000/ 2.jmet ...
- Redis Cluster 获取主从关系
redis-cli -h 192.168.11.111 -p 6380 -c cluster slots | xargs -n8 | awk '{print $3":"$4&qu ...
- Linux远程上传文件
#对拷文件夹 (包括文件夹本身) scp -r /home/slk root@192.168.1.5:/home # 对拷文件并重命名 scp /home/a.txt root@192.168.1.5 ...
- java虚拟机开篇01
一直以来对java 基础设施都啥都不知道啊,感觉有时候挺费力,挺吃劲的. 一下是一些很好的参考资料: http://blog.csdn.net/bingduanlbd/article/details/ ...