現給出兩人的交鋒記錄,請統計雙方的勝、平、負次數,並且給出雙方分別出什麼手勢的勝算最大。
輸入格式:
輸入第 1 行給出正整數 n(≤105 ),即雙方交鋒的次數。隨後 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作者
chen, yue
單位浙江大學
**長度限制
16 kb
時間限制
200 ms
記憶體限制
**法一:**分類討論
#include
#define ll long long
#define clk_tck 100
using
namespace std;
intrule
(char a,
char b)
else
if(a ==
'b'&& b ==
'j')
//b & c
if(a ==
'b'&& b ==
'c')
else
if(a ==
'c'&& b ==
'b')
// c & j
if(a ==
'c'&& b ==
'j')
else
if(a ==
'j'&& b ==
'c')
}int
main
(void
)else
if(ans ==2)
else
} cout << cnta <<
" "<< cntc <<
" "<< cntb << endl;
cout << cntb <<
" "<< cntc <<
" "<< cnta << endl;
int a[3]
=;int b[3]
=;sort
(a, a+3)
;sort
(b, b+3)
;for
(map<
char
,int
>
::iterator it = m.
begin()
; it != m.
end(
); it++)}
for(map<
char
,int
>
::iterator t = n.
begin()
; t != n.
end(
); t++)}
}
法二:設立迴圈結
#include
#define ll long long
#define clk_tck 100
using
namespace std;
intchange
(char c)
else
if(c ==
'c')
else
}int
rule
(char a,
char b)
else
}int
main
(void
)else
if(ans ==2)
else
} cout << cnta <<
" "<< cntc <<
" "<< cntb << endl;
cout << cntb <<
" "<< cntc <<
" "<< cnta << endl;
int a[3]
=;int b[3]
=;sort
(a, a+3)
;sort
(b, b+3)
;for
(map<
char
,int
>
::iterator it = m.
begin()
; it != m.
end(
); it++)}
for(map<
char
,int
>
::iterator t = n.
begin()
; t != n.
end(
); t++)}
}
剪刀石頭布
開始學習時寫的剪刀石頭布 雖然是用c 寫的 我感覺思想還是面向過程 慚愧慚愧 include include include include includeusing namespace std enum caiquan class inte cet inte cet inte cet system...
石頭剪刀布
題目描述 石頭剪刀布是常見的猜拳遊戲 石頭勝剪刀,剪刀勝布,布勝石頭。如果兩個人出拳一樣,則不分勝負。在 生活大 第二季第 8 集中出現了一種石頭剪刀布的公升級版遊戲。公升級版遊戲在傳統的石頭剪刀布遊戲的基礎上,增加了兩個新手勢 斯波克 星際迷航 主角之一。蜥蜴人 星際迷航 中的反面角色。這五種手勢...
剪刀石頭布
現在一共有 n個人 分別記為 1,2,n 在玩剪刀石頭布,如果知道他們每個人都出了什麼,你能找出來誰是 winner嗎?當且僅當乙個人可以贏其他所有人時,才稱這個人是 winner。我們將剪刀記作 2,石頭記作 0,布記作 5,那麼勝負關係就應當是2能贏 5,5能贏 0,0能贏 2。input 輸入...