PAT BASIC LEVEL 1018. 锤子剪刀布 (20)
2017-01-15 18:40
411 查看
1018. 锤子剪刀布 (20)
大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。
输入格式:
输入第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
#include<iostream> using namespace std; int main() { int a[3] = {}; int awin['J'+1] = {}; int bwin['J'+1] = {}; int ab = 0, ac = 0, aj = 0; int bb = 0, bc = 0, bj = 0; int times; cin >> times; while(times--) { char ges1,ges2; cin >> ges1 >> ges2; int r = ges1 - ges2; switch(r) { case 0: a[1] ++; break; case -1: //B C a[0] ++; ab ++; break; case -7: //C J a[0] ++; ac ++; break; case 8: //J B a[0] ++; aj ++; break; case 1: //C B a[2] ++; bb ++; break; case 7: //J C a[2] ++; bc ++; break; case -8: //B J a[2] ++; bj ++; break; } } cout << a[0] << ' ' << a[1] << ' ' << a[2] << '\n'; cout << a[2] << ' ' << a[1] << ' ' << a[0] << '\n'; if(ab >= ac && ab >= aj) cout << "B "; else if(ac > ab && ac > aj) cout << "C "; else if(aj > ab && aj >= ac) cout << "J "; if(bb >= bc && bb >= bj) cout << 'B'; else if(bc > bb && bc >= bj) cout << 'C'; else if(bj > bb && bj > bc) cout << 'J'; }
PS.
虽然代码很长,但是并不复杂。总之就是
if就对了。
想到了相对简单的方法,但是有一个测试无论如何通不过。没想到解决的办法。失败。
相关文章推荐
- PAT Basic Level 1018. 锤子剪刀布(20)
- PAT (Basic Level) Practise (中文)1018. 锤子剪刀布 (20)
- PAT (Basic Level) Practise (中文) 1018. 锤子剪刀布 (20)
- PAT Basic Level 1018. 锤子剪刀布 (20) 及最后一个测试点运行超时问题解决
- 【C++】浙大PAT (Basic Level)1018. 锤子剪刀布 (20)
- PAT (Basic Level) Practise (中文)- 1018. 锤子剪刀布 (20)
- PAT (Basic Level) Practise (中文)1018. 锤子剪刀布 (20)
- PAT (Basic Level)1018. 锤子剪刀布
- PAT Basic 1018. 锤子剪刀布 (20)(C语言实现)
- Pat(Basic Level)Practice--1018(锤子剪刀布)
- PAT(Basic Level)_1018_锤子剪刀布
- PAT (Basic Level) Practise:1018. 锤子剪刀布
- PATBasic——1018. 锤子剪刀布 (20)
- PAT乙级(Basic Level)真题-1018 人口普查(20)
- PAT (Basic Level) Practise (中文)1018. 锤子剪刀布 (20)
- PAT乙级(Basic Level)真题-1008 锤子剪刀布 (20)
- PAT1018 BASIC:锤子剪刀布 (20)
- PAT (Basic Level) Practise (中文)1009. 说反话 (20)
- PAT (Basic Level) Practise (中文) 1023. 组个最小数 (20)
- PAT (Basic Level) Practise (中文) 1033. 旧键盘打字(20)