1018. 錘子剪刀布 (20)
時間限制
100 ms
內存限制
65536 kB
代碼長度限制
8000 B
判題程序
Standard
作者
CHEN, Yue
大家應該都會玩“錘子剪刀布”的遊戲:兩人同時給出手勢,勝負規則如圖所示:
現給出兩人的交鋒記錄,請統計雙方的勝、平、負次數,並且給出雙方分別出什麼手勢的勝算最大。
輸入格式:
輸入第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
題目分析:將數據獲取,並直接進行比較,並將比較結果存入到數組當中,按要求輸出結果。獲取數據的時候要用getchar()獲取空格;否則獲取的可能不是數據而是空格
代碼:
#include <stdio.h> #include <stdlib.h> #include <string.h> int max(int buf[],int size) { int i,a; a=0; for(i=1;i<size;i++) { if(buf[i]>buf[a]) { a=i; } } return a; } int main() { int n; scanf("%d",&n); getchar(); int i; char J,Y; int Out[3]={0},OutJ[3]={0},OutY[3]={0}; for(i=0;i<n;i++) { scanf("%c %c",&J,&Y); getchar(); if(J=='B') { if(Y=='C') { Out[0]++; OutJ[0]++; } else if(Y=='B') { Out[1]++; } else { Out[2]=Out[2]+1; OutY[2]++; } } if(J=='C') { if(Y=='J') { Out[0]++; OutJ[1]++; } else if(Y=='C') { Out[1]++; } else { Out[2]++; OutY[0]++; } } if(J=='J') { if(Y=='B') { Out[0]++; OutJ[2]++; } else if(Y=='J') { Out[1]++; } else { Out[2]++; OutY[1]++; } } } printf("%d %d %d\n%d %d %d\n",Out[0],Out[1],Out[2],Out[2],Out[1],Out[0]); int MaxJ,MaxY; MaxJ=max(OutJ,3); MaxY=max(OutY,3); char a[3]={'B','C','J'}; printf("%c %c",a[MaxJ],a[MaxY]); system("pause"); return 0; }