Basic Level 1018. 锤子剪刀布 (20)
生活随笔
收集整理的這篇文章主要介紹了
Basic Level 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 求不會超時的python版本 #include <iostream> #include <vector> #include <algorithm> #include <cstdio> #include <cstring> using namespace std;char MaxCh(int * win){if(win[0]>=win[1] && win[0]>=win[2]) return 'B';if(win[2]>=win[0] && win[2]>=win[1]) return 'C';return 'J'; }int main() {int N;scanf("%d\n",&N);int result[2][3]={{0},{0}};int winnum[2][3]={{0},{0}};char ans[256]={0};ans['C']= 2;ans['J']= 1;ans['B']= 0;while(N--){char cp1,cp2;scanf("%c %c\n",&cp1,&cp2);int r = ans[cp1] - ans[cp2];if(r==0){++result[0][1];++result[1][1];}else if(r== 1 || r== -2){++winnum[0][ans[cp1]];++result[0][0];++result[1][2];}else{++winnum[1][ans[cp2]];++result[0][2];++result[1][0];}}printf("%d %d %d\n",result[0][0],result[0][1],result[0][2]);printf("%d %d %d\n",result[1][0],result[1][1],result[1][2]);printf("%c %c\n",MaxCh(winnum[0]),MaxCh(winnum[1]));return 0; }轉載于:https://www.cnblogs.com/madao1024/p/4044362.html
總結
以上是生活随笔為你收集整理的Basic Level 1018. 锤子剪刀布 (20)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 历届试题 密码发生器
- 下一篇: C51数据类型