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

news/2024/7/20 20:22:27 标签: 游戏, 蓝桥杯, 深度优先

填字母游戏

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

博弈+dfs

#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;
}

http://www.niftyadmin.cn/n/5476511.html

相关文章

Blender怎么样启动默认移动和Cavity效果

在使用Blender的过程中&#xff0c;有一些特殊的技巧很重要。 比如默认地设置blender打开时&#xff0c;就是移动物体&#xff0c;这样怎么样设置的呢&#xff1f; 需要在界面里打开下面的菜单: 这样就找到默认设置的地方&#xff0c;把下面的移动勾选起来&#xff0c;这样点…

DFS:深搜+回溯+剪枝解决组合问题

创作不易&#xff0c;感谢支持!!! 一、电话号码的组合 . - 力扣&#xff08;LeetCode&#xff09; class Solution { public:string hash[10]{"","","abc","def","ghi","jkl","mno","pqrs"…

MySQL数据库基础--事务

事务 是一组操作的集合&#xff0c;他是一个不可分割的工作单位&#xff0c;事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求&#xff0c;即这些操作要么同时成功&#xff0c;要么同时失败。 默认MySQL的事务是自动提交的&#xff0c;也就是说&#xff0c;当执行…

针对图/网络性能评估函数【networkx库】

简介 networkx 是一个 Python 库&#xff0c;用于创建、操作和研究复杂网络的结构和动态过程&#xff0c;它提供了许多内置函数来评估图的各种性能。 常用函数介绍 1.平均最短路径长度 (average_shortest_path_length)&#xff1a;计算图中所有节点对之间的平均最短路径长度。…

JavaScript笔记 11

目录 01 创建元素的方式 02 BOM概述 03 window 04定时器 05 location对象的使用 07 js特效 08 offset系列相关属性 09 scroll 相关属性 10 client 相关属性 11 window 相关的事件 12 event 相关的属性 01 创建元素的方式 创建元素的三种方式: 1.innerHTML创建元素 …

设计模式:生活中的迭代器模式

迭代器模式可以通过日常生活中的餐厅菜单遍历来类比。想象一下&#xff0c;你走进一家餐厅&#xff0c;服务员给了你一本菜单。这本菜单就像是一个聚合对象&#xff0c;它包含了各种菜品。你可以一页一页地翻阅菜单&#xff0c;这个翻阅的过程就像是使用迭代器来遍历聚合对象的…

本地部署WebSocket服务端结合内网穿透实现公网远程即时通讯

文章目录 1. Java 服务端demo环境2. 在pom文件引入第三包封装的netty框架maven坐标3. 创建服务端,以接口模式调用,方便外部调用4. 启动服务,出现以下信息表示启动成功,暴露端口默认99995. 创建隧道映射内网端口6. 查看状态->在线隧道,复制所创建隧道的公网地址加端口号7. 以…

chrome截屏插件用到的JavaScript 库,图像处理库,

包含的库介绍 javascripts\libs\ InboxSDK.js InboxSDK 是一个 JavaScript 库&#xff0c;用于在 Gmail 中添加应用菜单项目。它允许开发者向 Gmail 的应用菜单添加自己的项目&#xff0c;这些项目通常用于提供高级可折叠面板、导航或发送用户到已注册的不同路由 diigo-image-…