填字母游戏【蓝桥杯】/博弈+dfs

填字母游戏



博弈+dfs

cpp 复制代码
#include<iostream>
#include<map>
using namespace std;
//要用map存储已经处理过的字符串不然会超时
map<string,int> m;
//dfs返回的就是结果
int dfs(string s)
{
    //剪枝
    if(m.find(s)!=m.end()) return m[s];
    //找到LOL代表输了
    if(s.find("LOL")!=string::npos) return m[s]=-1;
    //找不到空位表示平局
    if(s.find("*")==string::npos) return m[s]=0;
    int ping=0;
    for(int i=0;i<s.size();i++)
    {
        if(s[i]=='*')
        {
            s[i]='L';
            if(dfs(s)==-1) 
            {
                //要回溯后才能存到m中
                s[i]='*';
                return m[s]=1;
            }
            if(dfs(s)==0) ping=1;
            s[i]='O';
            if(dfs(s)==-1) 
            {
                s[i]='*';
                return m[s]=1;
            }
            if(dfs(s)==0) ping=1;
            s[i]='*';
        }
    }
    //ping不为0表示有可能平局,返回0
    if(ping) return m[s]=0;
    //否则返回-1
    return m[s]=-1;
}
int main()
{
    int n;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        string s;
        cin>>s;
        cout<<dfs(s)<<endl;
    }
    return 0;
}
相关推荐
wjql2几秒前
少女前线蓝蝶契约体力恢复时间 少女前线蓝蝶契约体力怎么恢复
游戏
星马梦缘1 小时前
死锁与进程资源分配问题的解法
算法·操作系统·深度优先·死锁
wjql22 小时前
高能探宝团零氪阵容推荐 高能探宝团零氪阵容怎么搭配
游戏
寰宇的行者2 小时前
我用Hermes Agent一个月:自动写文章、管股票、看游戏截图,成本账一次算清
游戏
sensen_kiss2 小时前
CPT306 Principles of Computer Games Design 电脑游戏设计原理 Pt.8 Game AI(游戏里的“人工智能系统”)
人工智能·游戏
unityのkiven3 小时前
工作分享1(26.5.27):基于栈实现全局返回逻辑通用架构设计(适配异步 + 确认弹窗)
游戏·unity·c#·客户端架构
wanderist.3 小时前
14决赛蓝桥杯
职场和发展·蓝桥杯
上海云盾第一敬业销售4 小时前
游戏盾架构解析:保障在线游戏的安全
安全·游戏·架构
wgc2k4 小时前
Oops Framework-1-学习路线(Cocos Creator + ECS)
游戏·cocos2d
ʚ希希ɞ ྀ5 小时前
全排列 --- 回溯
算法·leetcode·深度优先