大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:
现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。
输入格式:
输入第 1 行给出正整数 N(≤105),即双方交锋的次数。随后 N 行,每行给出一次交锋的信息,即甲、乙双方同时给出的的手势。C
代表“锤子”、J
代表“剪刀”、B
代表“布”,第 1 个字母代表甲方,第 2 个代表乙方,中间有 1 个空格。
输出格式:
输出第 1、2 行分别给出甲、乙的胜、平、负次数,数字间以 1 个空格分隔。第 3 行给出两个字母,分别代表甲、乙获胜次数最多的手势,中间有 1 个空格。如果解不唯一,则输出按字母序最小的解。
输入样例:
1 2 3 4 5 6 7 8 9 10 11 12 13
| 10 C J J B C B B B B C C C C B J B B C J J
结尾无空行
|
输出样例:
题解:
此方法暂时没找到问题所在,第一个测试点答案错误 18分 希望发现问题的朋友能够指点一下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| n = int(input()) dicti = {'C':'J','J':'B','B':'C'} dicjia = {'C':0,'J':0,'B':0} dicyi = {'C':0,'J':0,'B':0} ping = 0 for i in range(n): jia,yi = input().split() if jia == yi: ping += 1 else: if dicti[jia] == yi: dicjia[jia] += 1 else: dicyi[yi] += 1 jiasheng = sum(dicjia.values()) yisheng = sum(dicyi.values()) print(jiasheng,ping,n-ping-jiasheng) print(yisheng,ping,n-ping-yisheng) if ping == n: print("B B"); else: d1 = sorted(dicjia.items(),key=lambda x:x[1],reverse=False) d2 = sorted(dicyi.items(),key=lambda x:x[1],reverse=False) print(d1[2][0],d2[2][0])
|
此方法为C语言 满分
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| #include<stdio.h> int main() { int N; char x,y; scanf("%d\n",&N); int i, win=0, lose=0, dogfall=0; int wc, wj, wb, lc, lj, lb; wc=wb=wj=lc=lj=lb=0; for(i=0;i<N;i++) { scanf("%c %c",&x, &y); getchar(); if(x=='C') { if(y=='C') dogfall++; if(y=='J') {win++; wc++;} if(y=='B') {lose++; lb++;} } if(x=='J') { if(y=='J') dogfall++; if(y=='B') {win++; wj++;} if(y=='C') {lose++; lc++;} } if(x=='B') { if(y=='B') dogfall++; if(y=='C') {win++; wb++;} if(y=='J') {lose++; lj++;} } } printf("%d %d %d\n",win, dogfall, lose); printf("%d %d %d\n",lose, dogfall, win); if(wc>wb&&wc>=wj) printf("C"); else if(wb>=wc&&wb>=wj) printf("B"); else if(wj>wb&&wj>wc) printf("J"); printf(" "); if(lc>lb&&lc>=lj) printf("C"); else if(lb>=lc&&lb>=lj) printf("B"); else if(lj>lb&&lj>lc) printf("J"); printf("\n");
return 0; }
|