1018 錘子剪刀布

2021-07-09 21:34:45 字數 1407 閱讀 8509

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

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

輸入格式:

輸入第1行給出正整數n(<=105),即雙方交鋒的次數。隨後n行,每行給出一次交鋒的資訊,即甲、乙雙方同時給出的的手勢。c代表「錘子」、j代表「剪刀」、b代表「布」,第1個字母代表甲方,第2個代表乙方,中間有1個空格。

輸出格式:

輸出第1、2行分別給出甲、乙的勝、平、負次數,數字間以1個空格分隔。第3行給出兩個字母,分別代表甲、乙獲勝次數最多的手勢,中間有1個空格。如果解不唯一,則輸出按字母序最小的解。

輸入樣例:

10

c jj b

c bb b

b cc c

c bj b

b cj j

輸出樣例:
5 3 2

2 3 5

b b

演算法:

演算法開始。

初始化整型變數總數、整型變數臨時變數為零、字元甲、字元乙、整形變數甲勝利次數為零、甲剪刀勝利次數為零、甲錘子勝利次數為零、甲布勝利次數為零、甲平局次數為零、乙勝利次數為零、乙剪刀勝利次數為零、乙錘子勝利次數為零、乙布勝利次數為零。

讀取剪刀錘子布次數,儲存於總數。

如果臨時變數大於等於總數,則跳到第七步。

讀取交鋒資訊,儲存於字元甲和字元乙。

判斷字元甲和字元乙:如果字元甲等於字元乙,則甲平局次數加一;如果字元甲是剪刀,字元乙是布或者字元甲是錘子,字元乙是剪刀或者字元甲是布,字元乙是錘子,那麼甲勝利次數加一,甲剪刀或錘子或布勝利次數加一;否則乙勝利次數加一,乙剪刀或錘子或布勝利次數加一。回到第四句。

輸出甲的勝利次數、平局次數、輸的次數,乙的勝利次數、平局次數、輸的次數。甲什麼手勢勝利次數最多就輸出什麼手勢,如果次數最多手勢不唯一就輸出字母序小的手勢。對乙也一樣。(甲勝利次數等於乙輸的次數。甲平局次數等於乙平局次數。甲失敗次數等於乙勝利次數。)

演算法結束。

注意:由於我們需要讀取快取區的字元,所以需要清空快取區,以讀取正確的字元。不推薦使用fflush(stdin)、setbuf(stdin. null),這兩個函式在xcode環境下達不到我們想要的結果。

下列**可在pat和xcode 上正確工作

#include char most_gesture(int j, int c, int b);

int main(int argc, const char * argv)

else

}else if(j==c)

else

}else

else}}

1018 錘子剪刀布

輸入格式 輸入第1行給出正整數n 105 即雙方交鋒的次數。隨後n行,每行給出一次交鋒的資訊,即甲 乙雙方同時給出的的手勢。c代表 錘子 j代表 剪刀 b代表 布 第1個字母代表甲方,第2個代表乙方,中間有1個空格。輸出格式 輸出第1 2行分別給出甲 乙的勝 平 負次數,數字間以1個空格分隔。第3行...

1018 錘子剪刀布

現給出兩人的交鋒記錄,請統計雙方的勝 平 負次數,並且給出雙方分別出什麼手勢的勝算最大。輸入格式 輸入第1行給出正整數n 105 即雙方交鋒的次數。隨後n行,每行給出一次交鋒的資訊,即甲 乙雙方同時給出的的手勢。c代表 錘子 j代表 剪刀 b代表 布 第1個字母代表甲方,第2個代表乙方,中間有1個空...

1018 錘子剪刀布

時間限制 100 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 chen,yue 大家應該都會玩 錘子剪刀布 的遊戲 兩人同時給出手勢,勝負規則如圖所示 現給出兩人的交鋒記錄,請統計雙方的勝 平 負次數,並且給出雙方分別出什麼手勢的勝算最大。輸入格式 ...