大家應該都會玩「錘子剪刀布」的遊戲:兩人同時給出手勢,勝負規則如圖所示:現給出兩人的交鋒記錄,請統計雙方的勝、平、負次數,並且給出雙方分別出什麼手勢的勝算最大。
輸入格式: 輸入第 1 行給出正整數 n(≤10^5),即雙方交鋒的次數。隨後 n行,每行給出一次交鋒的資訊,即甲、乙雙方同時給出的的手勢。c 代表「錘子」、j 代表「剪刀」、b 代表「布」,第 1 個字母代表甲方,第 2個代表乙方,中間有 1 個空格。
輸出格式: 輸出第 1、2 行分別給出甲、乙的勝、平、負次數,數字間以 1 個空格分隔。第 3行給出兩個字母,分別代表甲、乙獲勝次數最多的手勢,中間有 1 個空格。如果解不唯一,則輸出按字母序最小的解。
輸入樣例:
10c j
j bc b
b bb c
c cc b
j bb c
j j輸出樣例:
5 3 2
2 3 5
b b
#include
intmain()
,b[3]=
;//0,1,2分別表示b,c,j
int win[2]
=,even[2]
=,lose[2]
=;char s1,s2;
int max1,max2,flag1,flag2;
scanf
("%d"
,&n)
;while
(n!=0)
else
if(s2==
'c'&&s1==
'j')
//bcj
else
if(s1==
'c'&&s2==
'b')
else
if(s2==
'c'&&s1==
'b')
else
if(s1==
'j'&&s2==
'b')
else
if(s2==
'j'&&s1==
'b')
else
if(s1==s2)
n--;}
printf
("%d %d %d\n"
,win[0]
,even[0]
,lose[0]
);printf
("%d %d %d\n"
,win[1]
,even[1]
,lose[1]
);max1=a[0]
;/* printf("%d*",a[0]);
printf("%d*",a[1]);
printf("%d*",a[2]);*/
int i;
for(i=
0;i<
3;i++)}
max2=b[0]
;for
(i=0
;i<
3;i++)if
(max2(flag1==0)
printf
("b ");
else
if(flag1==1)
printf
("c ");
else
printf
("j ");
if(flag2==0)
printf
("b");
else
if(flag2==1)
printf
("c");
else
printf
("j");
return0;
}
注意本題是在c (clang 6.0.1)下交成功的
不知道為什麼gcc執行的結果不太對
ps解題的思路很簡單,但是過程稍微複雜。可能課適用性比較低。
關於版本的提交失敗問題歡迎討論。
1018 錘子剪刀布 (20 分)
填坑日記 本題我沒進坑哈哈哈哈 includeusing namespace std int main y 3 ej 3 ey 3 maxj,maxy cin n for i a b if a b b c 甲贏 else if a c b j 甲贏 else if a j b b 甲贏 else i...
1018 錘子剪刀布 (20 分
現給出兩人的交鋒記錄,請統計雙方的勝 平 負次數,並且給出雙方分別出什麼手勢的勝算最大。輸入第 1 行給出正整數 n 10 5 即雙方交鋒的次數。隨後 n 行,每行給出一次交鋒的資訊,即甲 乙雙方同時給出的的手勢。c代表 錘子 j代表 剪刀 b代表 布 第 1 個字母代表甲方,第 2 個代表乙方,中...
1018 錘子剪刀布 (20 分
現給出兩人的交鋒記錄,請統計雙方的勝 平 負次數,並且給出雙方分別出什麼手勢的勝算最大。輸入第 1 行給出正整數 n 10 5 即雙方交鋒的次數。隨後 n 行,每行給出一次交鋒的資訊,即甲 乙雙方同時給出的的手勢。c代表 錘子 j代表 剪刀 b代表 布 第 1 個字母代表甲方,第 2 個代表乙方,中...