区字棋中的最长非0链

一,区字棋

也叫憋死牛棋。

规则:

棋盘一共只有5个点,双方各2个棋子,还有一个空格。

先手必须移动左边的棋子,之后没有限制,2个棋子任意一个移动到空格皆可。

无法移动者判负。

二,不败策略

因为失败的阵型是固定的,要么2个都在上面,要么2个都在下面,只有这样才有可能被堵住。

所以不败策略也很简单,任意状态下,轮到任意方行动时,都至少有1种行动方法,不会走到固定的失败阵型,这就是不败策略了。

三,有向有环图分析

1,最长非零链

用博弈论分析,这个属于有向有环图游戏,上面的不败策略其实就是说,该有向图的等价图中,最长的非零链的长度为1

我们来验证一下。

(1)给所有状态编号

假设蓝色棋子分别在i,j,空格在k,那么我们编号为i*25+j*5+k,其中0<=i,j,k<=5

所有状态的编号都在0到124之间,但其中有小部分是非法状态(ijk重复),合法状态只有60种。

考虑到2个棋子相同的话,实际上只有30个不同的合法状态。

(2)构建有向图

int getId(int i, int j, int k) {return i * 25 + j * 5 + k;
}
vector<int> getIjk(int id) {return vector<int>{id / 25, id % 25 / 5, id % 5};
}
vector<int> getNext(int id) {auto v = getIjk(id);}
map<int, vector<int>> bfs(int id)
{queue<int>q;map<int, int>visit;q.push(id);visit[id] = 1;while (!q.empty()) {int t = q.front();q.pop();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/636878.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue对axios进行二次封装

前言 在Vue中&#xff0c;对Axios进行二次封装可以提高代码的可重用性和可维护性。通过封装&#xff0c;我们可以将请求的配置、错误处理和拦截器等逻辑集中到一个地方&#xff0c;方便后续的修改和扩展。此外&#xff0c;封装Axios还可以简化代码&#xff0c;减少重复的请求配…

ubuntu20遇到缺少qt4相关库的问题

最近需要做套接字通讯的工作&#xff0c;最好是有一个网络调试软件能够接受或者发送套接字&#xff0c;测试代码能够正常通讯。windows下有很多&#xff0c;但是linux下比较少&#xff0c;使用广泛的是下面这一款。 1、安装 首先从网盘&#xff08;链接: https://pan.baidu.c…

String在VS与Linux下的区别

目录 一、string的成员 1.VS 2.Linux 二、string的扩容机制 1. VS 2.Linux 一、string的成员 string是C标准库中的一个类模板&#xff0c;用于表示和操作字符串 string在 Windows 与 Linux 中的成员不是相同的 1.VS 4个成员&#xff1a;_str , _size , _capacity 和…

71.工作中redis的常用场景总结

文章目录 一、简介二、统计访问次数三、缓存四、分布式锁五、限流六、排行榜七、作为Session的存储器&#xff0c;存用户登录状态八、位统计九、生成全局ID 一、简介 Redis作为一种优秀的基于key/value的缓存&#xff0c;有非常不错的性能和稳定性&#xff0c;无论是在工作中&…

【ARM Cortex-M 系列 1.1 -- Cortex-M33 与 M4 差异 详细介绍】

请阅读【嵌入式开发学习必备专栏 之 Cortex-Mx 专栏】 文章目录 背景Cortex-M33 与 M4 差异Cortex-M33Cortex-M4关系和差异举例说明 背景 在移植 RT-Thread 到 瑞萨RA4M2&#xff08;Cortex-M33&#xff09;上时&#xff0c;遇到了hardfault 问题&#xff0c;最后使用了Cortex…

大数据开发之kafka(完整版)

第 1 章&#xff1a;Kafka概述 1.1 定义 Kafka是一个分布式的基于发布/订阅模式的消息队列&#xff0c;主要应用于大数据实时处理领域。 发布/订阅&#xff1a;消息的发布者不会将消息直接发送给特定的订阅者&#xff0c;而是将发布的消息分为不同的类别&#xff0c;订阅者只…

全志A133AndroidQ编译方式

编译uboot&#xff1a; cd longan/brandy/brandy-2.0 ./build.sh -p sun50iw10p1 //A133-android-10-plus\longan\brandy\brandy-2.0\u-boot-2018\u-boot.bin复制为u-boot-sun50iw10p1.bin 或者 //longan\brandy\brandy-2.0\u-boot-2018\configs\sun50iw10p1_defconfig cd …

Java String基础学习

目录 1、String的构造方法 2、String内存模型 3、字符串的比较 4、字符串的练习 1、用户登录系统 2、遍历字符串 3、统计字符次数 4、拼接字符串 5、字符串的反转 6、金额转换 7、手机号屏蔽 * 8、身份证信息查看 9、敏感词替换 5、StringBuilder 1、概念及练习…

leetcode热题100.三数之和

Problem: 15. 三数之和 文章目录 题目解题方法复杂度Code 题目 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元…

【51单片机Keil+Proteus8.9】控制步进电机+LCD1602显示状态

步进电机控制 设计思路 电路设计&#xff1a; 选用AT89C51单片机作为电路核心部件&#xff0c;外加LM016L液晶显示屏作为显示&#xff0c;显示步进电机的Fast&#xff0c;Slow&#xff0c;Stop的三个状态将AT89C51单片机所选引脚与LM016L控制引脚相连&#xff0c;再将数据通…

ASEPRITE使用笔记

aseprite学习笔记 快捷键 新建图层后,按快捷键c可以调出画布属性框放大缩小画布快捷键,鼠标滚轮移动画布快捷键,空格ctr+d,取消选取基本概念 软件五个基本区域:菜单栏、工具属性栏、工具栏、图层栏、颜色栏颜色栏分为色板和调色区域注意事项 创造时,需要把输入法调整成应…

03.net6必须熟悉的类

C#必须熟悉的类 值和实例 true&#xff0c;false ,“”,‘a’,34f,34,34m&#xff0c;“ggd”,$“gg{age}” 基本类型和常用类型 byte int char decimal float double string DateTime TimeSpan bool Array dynamic var 自动推断类型 常用类型 Object Console Math …

java创建线程的三种方式

1、实现Runnable接口 这是最常用的方法&#xff0c;需要创建一个实现Runnable接口的类&#xff0c;并重写run()方法。然后&#xff0c;创建一个Thread对象并将这个实现Runnable接口的类的实例作为参数传递给Thread的构造函数。最后&#xff0c;调用Thread对象的start()方法来启…

(2024,VMamba,交叉扫描,线性复杂度,全局感受野,动态权重)视觉状态空间模型

VMamba: Visual State Space Model 公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 3. 方法 3.1 基础概念 3.2 2D 选择性扫描 3.3 VMamba 模型 3.3.1 整体架构 3.3.2 VSS…

大数据开发之Kafka(broker、消费者、eagle监控、kraft模式)

第 4 章&#xff1a;Kafka Broker 4.1 Kafka Broker工作流程 4.1.1 Zookeeper存储的Kafka的信息 1、查看zookeeper中的kafka节点所存储的信息 启动Zookeeper客户端 [atguiguhadoop104 zookeeper-3.5.7]$ bin/zkCli.sh 通过ls命令列出kafka节点内容 [zk: localhost:2181(CO…

Windows11添加美式(纯英文)输入法

打开设置&#xff0c;选择“时间和语言” 选择“语言和区域” 检查语言中否有英语&#xff08;美国&#xff09;&#xff0c;如果没有&#xff0c;请单击“添加语言” 单击英语&#xff08;美国&#xff09;右方的更多选项按钮&#xff0c;选择“语言选项” 找到下方“键盘…

对象数组变成一维数组,导出txt文件

假设对象数组格式为此 arr1: [{id: 1,title: 我是1目录,children: [{id: 11,title: 我是1-1目录,children: [{id: 111,title: 我是1-1-1目录,children: [],},],},],},{id: 2,title: 我是2目录,children: [{id: 21,title: 我是2-1目录,children: [],},],},], 页面如下 先在页面…

Kafka Connect: Debezium MySQL Connector 的 Partition 和 Replication 配置

使用 Kafka Connect 的 Debezium MySQL Connector 将 MySQL 数据库中的 CDC 数据写入 Kafka 时&#xff0c;在 Kafka 默认允许自动创建 Topic 的情况下&#xff0c;Kafka Connect 自动创建的 Topic 只有一个 Partition&#xff0c;在实际应用中&#xff0c;这显然是不行&#x…

gin中使用JWT

1.jwt使用 安装 go get github.com/golang-jwt/jwt/v4 默认Claim 如果我们直接使用JWT中默认的字段&#xff0c;没有其他定制化的需求则可以直接使用这个包中的和方法快速生成和解析token。 // 用于签名的字符串 var mySigningKey []byte("liwenzhou.com")// G…

【Spring 篇】MyBatis中的CRUD魔法:数据之美的四重奏

MyBatis&#xff0c;这个数据持久化的魔法师&#xff0c;以其优雅的SQL映射和简洁的配置文件&#xff0c;为我们呈现出一场CRUD&#xff08;Create, Read, Update, Delete&#xff09;的奇妙之旅。在这篇博客中&#xff0c;我们将深入探讨MyBatis中的增、删、改、查操作&#x…