現給出兩人的交鋒記錄,請統計雙方的勝、平、負次數,並且給出雙方分別出什麼手勢的勝算最大。
輸入第 1 行給出正整數 n(≤105),即雙方交鋒的次數。隨後 n 行,每行給出一次交鋒的資訊,即甲、乙雙方同時給出的的手勢。c
代表「錘子」、j
代表「剪刀」、b
代表「布」,第 1 個字母代表甲方,第 2 個代表乙方,中間有 1 個空格。
輸出第 1、2 行分別給出甲、乙的勝、平、負次數,數字間以 1 個空格分隔。第 3 行給出兩個字母,分別代表甲、乙獲勝次數最多的手勢,中間有 1 個空格。如果解不唯一,則輸出按字母序最小的解。
思路:題目並不難,需要注意的是:如果解不唯一,則輸出按字母序最小的解。為方便統計勝利時的出拳,可規定為對應的整數,這種方法很多地方都會用到。
#include #include #include using namespace std;
int solve(char c1,char c2);
int key(char c);
int win(int *n);
int main( )
,b[3]=;//記錄甲乙勝利時的出拳
int a=0,b=0,c=0,n,i;//a,b,c記錄甲勝、平、負次數,甲勝乙負,甲平乙平
char c1,c2;
scanf("%d",&n);
for(i=0;i>c1>>c2;//不會接受空格 ,同時忽略回車
/* getchar();//接受回車
scanf("%c %c",&c1,&c2);//字元間有空格
*/ int k=solve(c1,c2);
if(k>0)//c1勝
else if(k==0)//平
else if(k<0)//c2勝
}printf("%d %d %d\n",a,b,c);
printf("%d %d %d\n",c,b,a);
win(a);
printf(" ");
win(b);
return 0;
}int solve(char c1,char c2)
int key(char c)
int win(int *n) }
//之前已經規定bcj值
if(y==0)
printf("b");
if(y==1)
printf("c");
if(y==2)
printf("j");
return 0;
}
PAT 1018 錘子剪刀布
現給出兩人的交鋒記錄,請統計雙方的勝 平 負次數,並且給出雙方分別出什麼手勢的勝算最大。輸入格式 輸入第1行給出正整數n 105 即雙方交鋒的次數。隨後n行,每行給出一次交鋒的資訊,即甲 乙雙方同時給出的的手勢。c代表 錘子 j代表 剪刀 b代表 布 第1個字母代表甲方,第2個代表乙方,中間有1個空...
PAT1018錘子剪刀布
現給出兩人的交鋒記錄,請統計雙方的勝 平 負次數,並且給出雙方分別出什麼手勢的勝算最大。輸入格式 輸入第1行給出正整數n 105 即雙方交鋒的次數。隨後n行,每行給出一次交鋒的資訊,即甲 乙雙方同時給出的的手勢。c代表 錘子 j代表 剪刀 b代表 布 第1個字母代表甲方,第2個代表乙方,中間有1個空...
PAT 1018 錘子剪刀布
現給出兩人的交鋒記錄,請統計雙方的勝 平 負次數,並且給出雙方分別出什麼手勢的勝算最大。輸入格式 輸入第1行給出正整數n 105 即雙方交鋒的次數。隨後n行,每行給出一次交鋒的資訊,即甲 乙雙方同時給出的的手勢。c代表 錘子 j代表 剪刀 b代表 布 第1個字母代表甲方,第2個代表乙方,中間有1個空...