日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

蓝桥杯---试题 历届试题 填字母游戏(博弈)

發布時間:2024/1/8 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 蓝桥杯---试题 历届试题 填字母游戏(博弈) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

試題 歷屆試題 填字母游戲

資源限制
時間限制:1.0s 內存限制:256.0MB
問題描述
  小明經常玩 LOL 游戲上癮,一次他想挑戰K大師,不料K大師說:
  “我們先來玩個空格填字母的游戲,要是你不能贏我,就再別玩LOL了”。

K大師在紙上畫了一行n個格子,要小明和他交替往其中填入字母。

并且:

1. 輪到某人填的時候,只能在某個空格中填入L或O
  2. 誰先讓字母組成了“LOL”的字樣,誰獲勝。
  3. 如果所有格子都填滿了,仍無法組成LOL,則平局。

小明試驗了幾次都輸了,他很慚愧,希望你能用計算機幫他解開這個謎。
輸入格式
  第一行,數字n(n<10),表示下面有n個初始局面。
  接下來,n行,每行一個串,表示開始的局面。
  比如:“**”, 表示有6個空格。“L”, 表示左邊是一個字母L,它的右邊是4個空格。
輸出格式
  要求輸出n個數字,表示對每個局面,如果小明先填,當K大師總是用最強著法的時候,小明的最好結果。
  1 表示能贏
  -1 表示必輸
  0 表示可以逼平
樣例輸入

4 *** L**L L**L***L L*****L

樣例輸出

0 -1 1 1

**思路:**博弈,dfs搜索即可,因為字符串的規模較小,所以dfs不會超時,注意回溯;
code:

#include<bits/stdc++.h> using namespace std; map<string,int>mp; string s;int dfs() {if(mp.count(s))return mp[s];if(s.find("LOL")!=-1)return -1;if(s.find("*")==-1)return 0;int flag=0;for(int i=0;i<s.size();i++){if(s[i]=='*'){s[i]='L';int t1=dfs();s[i]='*';if(t1==-1){return mp[s]=1;}if(t1==0){flag=1;}s[i]='O';int t2=dfs();s[i]='*';if(t2==-1){return mp[s]=1;}if(t2==0){flag=1;}}}if(flag){return mp[s]=0;}else{return mp[s]=-1;} }int main() {int n;cin>>n;while(n--){cin>>s;printf("%d\n",dfs());}return 0; }

總結

以上是生活随笔為你收集整理的蓝桥杯---试题 历届试题 填字母游戏(博弈)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。