Week14 石頭剪刀布

2021-10-06 13:05:32 字數 1465 閱讀 6424

每乙個大人曾經都是乙個小孩,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 請根據下列提示選擇您的出拳手勢 ...