1018 錘子剪刀布 20分

2021-10-14 16:37:57 字數 2057 閱讀 5921

大家應該都會玩「錘子剪刀布」的遊戲:兩人同時給出手勢,勝負規則如圖所示:

現給出兩人的交鋒記錄,請統計雙方的勝、平、負次數,並且給出雙方分別出什麼手勢的勝算最大。

輸入格式: 輸入第 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 個代表乙方,中...