每乙個大人曾經都是乙個小孩,q老師 也一樣。
為了回憶童年,q老師 和 monika 玩起了石頭剪刀布的遊戲,遊戲一共 n 輪。無所不知的 q老師 知道每一輪 monika 的出招,然而作為限制, q老師 在這 n 輪遊戲中必須恰好出 a 次石頭,b 次布和 c 次剪刀。
如果 q老師 贏了 monika n/2(上取整) 次,那麼 q老師就贏得了這場遊戲,否則 q老師 就輸啦!
q老師非常想贏,他想知道能否可以贏得這場遊戲,如果可以的話,q老師希望你能告訴他一種可以贏的出招順序,任意一種都可以。
【輸入】
第一行乙個整數 t(1 ≤ t ≤ 100)表示測試資料組數。然後接下來的 t 組資料,每一組都有三個整數:
第一行乙個整數 n(1 ≤ n ≤ 100)
第二行包含三個整數 a, b, c(0 ≤ a, b, c ≤ n)。保證 a+b+c=n
第三行包含乙個長度為 n 的字串 s,字串 s 由且僅由 『r』, 『p』, 『s』 這三個字母組成。第 i 個字母 s[i] 表示 monika 在第 i 輪的出招。字母 『r』 表示石頭,字母 『p』 表示布,字母 『s』 表示剪刀
【輸出】
對於每組資料:
如果 q老師 不能贏,則在第一行輸出 「no」(不含引號)
否則在第一行輸出 「yes」(不含引號),在第二行輸出 q老師 的出招序列 t。要求 t 的長度為 n 且僅由 『r』, 『p』, 『s』 這三個字母構成。t 中需要正好包含 a 個 『r』,b 個 『p』 和 c 個 『s』
「yes」/"no"是大小寫不敏感的,但是 『r』, 『p』, 『s』 是大小寫敏感的。
【樣例輸入】23
1 1 1
rps3
3 0 0
rps【樣例輸出】
yespsr
no這道題的主要解決思路為貪心演算法,從第一局開始,對於對方的出拳,如果有可贏的選擇,則打出可贏的套路,贏局加1,遍歷所有局之後,在輸出時,如果沒有對應可贏的拳可出,則從剩餘的拳路裡選擇乙個輸出
#include
#include
using
namespace std;
int n,a,b,c;
string s;
char q[
105]
;int
main()
if(s[i]
=='p'
&&c!=0)
//石頭
if(s[i]
=='s'
&&a!=0)
//石頭
}int win=
(n+1)/
2;if(ans>=win)
else
if(b!=0)
else
if(c!=0)
}}cout<}else
cout<<
"no"
<}}
1018 石頭剪刀布
現給出兩人的交鋒記錄,請統計雙方的勝 平 負次數,並且給出雙方分別出什麼手勢的勝算最大。輸入第 1 行給出正整數 n 10 5 即雙方交鋒的次數。隨後 n 行,每行給出一次交鋒的資訊,即甲 乙雙方同時給出的的手勢。c 代表 錘子 j 代表 剪刀 b 代表 布 第 1 個字母代表甲方,第 2 個代表乙...
1018石頭剪刀布(模擬)
時間限制 100 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 chen,yue 大家應該都會玩 錘子剪刀布 的遊戲 兩人同時給出手勢,勝負規則如圖所示 現給出兩人的交鋒記錄,請統計雙方的勝 平 負次數,並且給出雙方分別出什麼手勢的勝算最大。輸入格式 ...
11 石頭 剪刀 布遊戲
bin bash 編寫指令碼,實現人機 石頭,剪刀,布 遊戲 game 石頭 剪刀 布 num random 3 computer 通過隨機數獲取計算機的出拳 出拳的可能性儲存在乙個陣列中,game 0 game 1 game 2 分別是 3 中不同的可能 echo 請根據下列提示選擇您的出拳手勢 ...