【蓝桥杯】灭鼠先锋

一.题目描述

 二.解题思路

博弈论:

只能转移到必胜态的,均为必败态。

可以转移到必败态的,均为必胜肽。

最优的策略是,下一步一定是必败态。

#include<iostream>
#include<map>
using namespace std;

map<string,bool> mp;
bool check(string s){
    int cnt=0;
    for(int i=0;i<s.length();i++){
        if(s[i]=='o'){
            cnt++;
        }
    }
    return cnt==1;
}
bool dfs(string s){
    if(mp.count(s)){
        return mp[s];
    }
    if(check(s)){//当前状态只有一个o,必为必败态
        mp[s]=false;
        return false;
    }
    //放置1个
    for(int i=0;i<s.size();i++){
        if(s[i]=='o'){
            string temp=s;
            temp[i]='x';
            if(dfs(temp)==false){
                mp[s]=true;
                return true;
            }
        }
    }
    //放置2个
    for(int i=0;i<s.size();i++){
        if(s[i]=='o'&&s[i+1]=='o'&&i!=3){
            string temp=s;
            temp[i]='x';
            temp[i+1]='x';
            if(dfs(temp)==false){
                mp[s]=true;
                return true;
            }
        }
    }
    mp[s]=false;
    return false;
}

 只要能够确保当前棋局的状态在自己下过棋之后,能够是必败,则一定必胜。

使用键值对来记录状态。(动态规划)

如果对于当前的棋盘状态,以前有记录的话,可以直接查询。

当前状态,棋盘上只有一个o,那么一定是必败态,递归的出口之一。

如果可以继续下棋,那么就要找出最优方案(下一步一定是必败态的)。

可以选择放置一个或两个棋子。

对于整个棋盘进行遍历,找到所有能够下棋子的位置,进行探索,如果将棋子下在该处,其下一个状态为必败态,则这个状态就一定是必胜态,返回true。

如果已经探索了所有的位置,但是仍然没有返回,那么就说明,现在一定是必败。

相关推荐

  1. 贪心+

    2024-02-14 11:02:01       44 阅读
  2. 简介

    2024-02-14 11:02:01       34 阅读
  3. 练习题

    2024-02-14 11:02:01       36 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-14 11:02:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-14 11:02:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-14 11:02:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-14 11:02:01       18 阅读

热门阅读

  1. 蓝桥杯每日一题----素数筛

    2024-02-14 11:02:01       30 阅读
  2. Android:自定义控件

    2024-02-14 11:02:01       28 阅读
  3. 算法笔记P67

    2024-02-14 11:02:01       28 阅读
  4. 兵棋推演是离散问题,深度学习是连续问题

    2024-02-14 11:02:01       31 阅读
  5. Gateway中Spring Security6统一处理CORS

    2024-02-14 11:02:01       29 阅读
  6. 第一章 文档数据库 (DocDB) 简介

    2024-02-14 11:02:01       29 阅读
  7. Ajax 入门

    2024-02-14 11:02:01       31 阅读
  8. 796. 子矩阵的和

    2024-02-14 11:02:01       34 阅读
  9. λ-矩阵的多项式展开

    2024-02-14 11:02:01       30 阅读
  10. 数据库第三章作业-SQL语言

    2024-02-14 11:02:01       29 阅读
  11. 局部加权回归

    2024-02-14 11:02:01       30 阅读