藍橋杯 PREV 46 填字母遊戲(博弈)

2021-10-02 23:50:08 字數 724 閱讀 7051

prev-46 填字母遊戲

思路:此題博弈的思想就是每個人尋找自己每一步的最優解,我們用dfs模擬博弈過程;

int dfs()返回某方此步驟的最優解,遍歷所有空格,模擬所有可能然後取裡面最優的乙個作為函式返回值;在遊戲結束之前每個人每個步驟填乙個空格然後遞迴地將剩下的局面交給對方;

為了減少複雜度我們採用map容器進行記憶化搜尋,儲存該局面的最優結果;

**:

#include

using

namespace std;

mapint> best;

string s;

#define n s.length()

inline

bool

check

(int

& p)

inline

intdfs()

s[i]

='o'

; ans =

max(ans,

-dfs()

);if(ans ==1)

s[i]

='*';}

if(flag ==

false

|| ans ==0)

return best[s]

= ans;

}int

main()

return0;

}

藍橋杯 填字母

題目 輪到某人填的時候,只能在某個空格中填入l或o 誰先讓字母組成了 lol 的字樣,誰獲勝。如果所有格仔都填滿了,仍無法組成lol,則平局。小明試驗了幾次都輸了,他很慚愧,希望你能用計算機幫他解開這個謎。本題的輸入格式為 第一行,數字n n 10 表示下面有n個初始局面。接下來,n行,每行乙個串,...

藍橋杯 歷屆試題 填字母遊戲

傳送門 問題描述 小明經常玩 lol 遊戲上癮,一次他想挑戰k大師,不料k大師說 我們先來玩個空格填字母的遊戲,要是你不能贏我,就再別玩lol了 k大師在紙上畫了一行n個格仔,要小明和他交替往其中填入字母。並且 1.輪到某人填的時候,只能在某個空格中填入l或o 2.誰先讓字母組成了 lol 的字樣,...

DFS 藍橋杯試題 填字母遊戲

oj位址 小明經常玩 lol 遊戲上癮,一次他想挑戰k大師,不料k大師說 我們先來玩個空格填字母的遊戲,要是你不能贏我,就再別玩lol了 k大師在紙上畫了一行n個格仔,要小明和他交替往其中填入字母。並且 1.輪到某人填的時候,只能在某個空格中填入l或o 2.誰先讓字母組成了 lol 的字樣,誰獲勝。...