現給出兩人的交鋒記錄,請統計雙方的勝、平、負次數,並且給出雙方分別出什麼手勢的勝算最大。
輸入格式:
輸入第 1 行給出正整數 n(≤105 ),即雙方交鋒的次數。隨後 n 行,每行給出一次交鋒的資訊,即甲、乙雙方同時給出的的手勢。c 代表「錘子」、j 代表「剪刀」、b 代表「布」,第 1 個字母代表甲方,第 2 個代表乙方,中間有 1 個空格。
輸出格式:
輸出第 1、2 行分別給出甲、乙的勝、平、負次數,數字間以 1 個空格分隔。第 3 行給出兩個字母,分別代表甲、乙獲勝次數最多的手勢,中間有 1 個空格。如果解不唯一,則輸出按字母序最小的解。
輸入樣例1:
10
c jj b
c bb b
b cc c
c bj b
b cj j
輸出樣例1:
5 3 2
2 3 5
b b
總結:
重點:第 3 行輸出兩個字母(即表甲、乙獲勝次數最多的手勢)如果解不唯一,則輸出按字母序最小的解。
用j[0]代表甲用b勝的次數,j[1]代表甲用c勝的次數,j[2]代表甲用j勝的次數
b找出j,y中最大的,記錄下標。若相等,比對下標是否比前乙個小,若是則交換下標。
int max_j = j[0]
;int flag_j =0;
for(
int i =
0; i <
3; i++)if
((j[i]
== max_j)
&&(i)}
ac**:
#include
#include
#include
using namespace std;
int main()
int c_j_win =
0, c_j_lose =
0, c_j_fair =0;
int c_y_win =
0, c_y_lose =
0, c_y_fair =0;
vectorj(
3.0)
; vectory(
3,0)
;for
(int i =
0; i < n; i++
)else
if(v[i]
.first ==
'j'&&v[i]
.second ==
'b')
else
if(v[i]
.first ==
'b'&&v[i]
.second ==
'c')
else
if(v[i]
.second ==
'c'&&v[i]
.first ==
'j')
else
if(v[i]
.second ==
'j'&&v[i]
.first ==
'b')
else
if(v[i]
.second ==
'b'&&v[i]
.first ==
'c')
else
} cout << c_j_win <<
" "<< c_j_fair <<
" "<< c_j_lose << endl;
cout << c_y_win <<
" "<< c_y_fair <<
" "<< c_y_lose << endl;
int max_j = j[0]
; int flag_j =0;
for(int i =
0; i <
3; i++)if
((j[i]
== max_j)
&&(iint max_y = y[0]
; int flag_y =0;
for(int i =
0; i <
3; i++)if
((y[i]
== max_y)
&&(iif(flag_j ==0)
cout <<
"b"<<
" ";
else
if(flag_j ==1)
cout <<
"c"<<
" ";
else
if(flag_y ==0)
cout <<
"b";
else
if(flag_y ==1)
cout <<
"c";
else
system
("pause");
return0;
}
1018 錘子剪刀布
大家應該都會玩 錘子剪刀布 的遊戲 兩人同時給出手勢,勝負規則如圖所示 現給出兩人的交鋒記錄,請統計雙方的勝 平 負次數,並且給出雙方分別出什麼手勢的勝算最大。輸入格式 輸入第1行給出正整數n 105 即雙方交鋒的次數。隨後n行,每行給出一次交鋒的資訊,即甲 乙雙方同時給出的的手勢。c代表 錘子 j...
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個空...