現給出兩人的交鋒記錄,請統計雙方的勝、平、負次數,並且給出雙方分別出什麼手勢的勝算最大。
輸入格式:
輸入第 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這道題題意很清楚,實現起來也很簡單,但是**很容易寫的很長,我這裡實現的方式簡單,**也很短。
乙個比較坑的地方就是輸出的部分,因為有可能甲或者乙一局都沒有贏過,理論上沒有贏應該輸出空才對,但是沒有贏的話輸出b就行了,仔細分析題目也沒有錯,可以理解為三個手勢都贏了0次,按照字母序最小的就是b。因為這是第三次優化**,忘記了之前是怎麼做的了,所以還在這裡卡了很久@_@。
#include
using
namespace std;
intmain()
for(
int i =
0; i <
2; i++
)char ans_a =
(max_element
(win_a.
begin()
, win_a.
end())
- win_a.
begin()
+'a');
//找甲贏的最多的手勢
char ans_b =
(max_element
(win_b.
begin()
, win_b.
end())
- win_b.
begin()
+'a');
//找乙贏的最多的手勢
cout <<
(ans_a ==
'a'?
'b': ans_a)
<<
" "<<
(ans_b ==
'a'?
'b': ans_b)
;//如果沒有贏過,輸出b;
return0;
}
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 個代表乙方,中...