填字母游戏【蓝桥杯】/博弈+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;
}
相关推荐
Solange__20 小时前
影视预演怎么用AI生成3D场景?从分镜、Blockout到镜头交付的完整流程
人工智能·游戏·3d·ai·自然语言处理·aigc·游戏策划
郝学胜-神的一滴1 天前
游戏设计:原型与开发 11:用概率与电子表格搞定骰子系统
程序人生·游戏·游戏策划·1024程序员节·游戏设计
treesforest1 天前
游戏账号安全风险分层方案:IP信号分层与人机复核实践
tcp/ip·安全·游戏·1024程序员节
Raspberry_Pi_官方账号1 天前
隆重推出《Raspberry Pi 复古游戏指南》
游戏·树莓派·diy·raspberry pi
Oiiouui1 天前
针对Godot-GridGame(网格游戏)的DI注入+RefCounted数据驱动信号流架构设计的研究(全程开源)
游戏·游戏引擎·godot·1024程序员节
Tsuki_tl1 天前
【优选算法 — 双指针】经典例题题解+算法总结
算法·蓝桥杯·力扣·刷题·双指针·1024程序员节·优选算法
极验2 天前
全能注册机之后,游戏风控的战场变了
游戏
小小数媒成员2 天前
Rect Transform
游戏·unity·游戏引擎
NEFU_Jyj2 天前
牛客周赛R166(max型瓶颈最短路,前后缀DP合并)
算法·深度优先
电子云与长程纠缠3 天前
UE5魂系游戏开发教程05
开发语言·学习·游戏·ui·ue5