经典算法之博弈论 填字母游戏

蓝桥杯2017年国赛——填字母游戏(博弈) 题目描述 样例 解析:这是一道比较典型的博弈类问题,首先可以采用递归的做法将整个过程模拟一遍,许多人可能对于题目中的“当K大师总是用最强走法”感到困惑?,什么情况下是最强走法呢?存在某种贪心么?,事实上是,例如在某个局势下,K大师有n种走法,其中若有一种能够保证胜利,则K大师将采用该种情况作为返回,这就是最强走法,若一次都没有胜,但至少平了一次,则返回平,再如果一次平局都没有,则返回输,因此对于该题应该注意以下几个点: ·只要在该局势下能获胜一次则立即返回该次赢 ·若所有情况下均无法获胜但在 阅读详情

问题描述:

有四种残局,星号'*'代表空格.

两人博弈,轮流在空格处填补字母,一次只能填写一个,即'L'或者'O',最先拼出'LOL'字样的获胜.


解题思路:

每人每次只能填'L'字母或者'O'字母,而填充后局面如何就递归试探交给对方去判断,赢则return 1, 输则return -1, 平局则return 0.

试探结束后再回溯用于试探下一个局面.


代码实现:

public class Main {	
	public static void main(String[] args) {
		System.out.println(game("***"));
		System.out.println(game("L**L"));
		System.out.println(game("L**L***L"));
		System.out.println(game("L*****L"));
	}

	public static int game(String x) {   //x为当前局面
		return fun(x.toCharArray());
	}

	public static int fun(char[] ch) {
		String str = new String(ch);
		if (str.contains("LOL")) return -1;   //已方局面已有LOL则输
		if (str.contains("*") == false) return 0;   //没有空格且未胜则必为平局
		boolean ping = false;
		
		for (int i = 0; i < ch.length; i++) {
			
			if (ch[i] == '*') {
				try {
					ch[i] = 'O';   //试着填入O
					switch(fun(ch)) {
					case -1:
						return 1;
					case 0:
						ping = true;
					}
					ch[i] = 'L';   //试着填入L
					switch(fun(ch)) {
					case -1:
						return 1;
					case 0:
						ping = true;
					}
				} 
				finally {
					ch[i] = '*';  //回溯
				}
			}
		}
		
		if (ping) return 0;   //平局
		return -1;   //输
	}
}



编译运行:




博弈论——组合游戏(Bash和nim) 就是说nim游戏是一堆石子不能增加的游戏,要不断地从其中的一堆石子中取走一些石子,然后台阶nim游戏就是说,把奇数层的阶梯维护成一个nim游戏,根据nim游戏的规则,当奇数层的异或和不为0的时候,先手胜,因为如果后手将偶数层的石子移动到奇数层,先手可以将该奇数层被移过来的石子,又移到下一层偶数层,此时奇数层的状态不受影响,后手想改变状态的话,就要将奇数层的石子移到偶数层,那这时异或和由0变为正整数,先手始终能从奇数层上一部分石子,使得异或和又变成零。如果一开始奇数层的异或和为0的话,同理,但会是后手胜。 阅读详情

相关推荐

ISO26262功能安全--产品开发过程

目录 1.总体理解 2.概念阶段——吹牛,我们是打草稿的 2.1 相关项定义 2.2 HARA分析 2.3 功能安全目标 2.4 安全需求与安全概念 3. 系统阶段——闭门造神车,我们开始修炼 3.1 技术安全需求(TSC) 3.2 系统架构设计 3.3 安全分析与独立性分析 3.4 软硬件接口(HSI) 4. 硬件阶段——苦其心志,苦练经骨 4.1 硬件架构...

AgingMoon的博客 1万+

Combinatorial Games

若你想仔细学习博弈论,我强烈推荐加利福尼亚大学的Thomas S. Ferguson教授精心撰写并免费提供的这份教材,它使我受益太多。(如果你的英文水平不足以阅读它,我只能说,恐怕你还没到需要看“博弈论”的时候。) Nim游戏是博弈论中最经典的模型(之一?),它又有着十分简单的规则和无比优美的结论,由这个游戏开始了解博弈论恐怕是最合适不过了。 Nim游戏是组合游戏(Combin

WonSoon的专栏 1777

《Swin-Unet: 类Unet的纯Transformer架构用于医学图像分割》学习笔记

近年来,卷积神经网络(CNN)在医学图像分析领域取得了重要进展。尤其是基于U形架构和跳跃连接的深度神经网络广泛应用于各种医学图像任务。然而,尽管CNN表现优异,但由于卷积操作的局部性,其难以很好地学习全局和长距离语义信息的交互。在本文中,我们提出了Swin-Unet,一种用于医学图像分割的类Unet纯Transformer模型。被切分为Token的图像块输入到基于Transformer的U形编码器-解码器架构中,通过跳跃连接实现局部和全局语义特征的学习。

学无止境。 5547

蓝桥杯:填字母游戏(博弈论)

标题:填字母游戏 小明经常玩 LOL 游戏上瘾,一次他想挑战K大师,不料K大师说: “我们先来玩个空格填字母的游戏,要是你不能赢我,就再别玩LOL了”。 K大师在纸上画了一行n个格子,要小明和他交替往其中填入字母。 并且: 1. 轮到某人填的时候,只能在某个空格中填入L或O 2. 谁先让字母组成了“LOL”的字样,谁获胜。 3. 如果所有格子都填满了,仍无法组成LOL,则平局。 小明试...

amf12345的博客 1162

美团外卖 mtgsig 1.2 逆向工程与补环境实战指南

本文深入解析了美团外卖核心风控参数mtgsig 1.2的生成机制与逆向实战。通过拆解其复杂的JSON结构,揭示了设备指纹、环境信息加密等关键字段。重点阐述了在Node.js中模拟浏览器环境(补环境)的核心方法,包括DOM/BOM对象、本地存储及Canvas/WebGL等高级指纹的模拟技巧,为安全研究和合规自动化测试提供了一套完整的技术指南。

uber9的博客 410

deepseek本地部署及应用部署指南

如果你找到的日志是[send] via NET/IB/0,则表示网络通信是通过IB网络的,但是没有开启GDRDMA技术,则会有大致5%的性能损耗(网传,未实测)。新增的环境变量配置,主要用于启用IB网络通信,而非使用以太网进行通信,详细的每一个参数的具体含义,可以在英伟达NCCL的官方网站上找到说明。下一步,我会对已经完成部署的模型进行压测,来探索系统的性能极限在哪里,以及如何在生产环境中何如进行进一步的性能优化,期待你的关注。

weixin_39797121的博客 2624

填字母游戏(博弈问题)

K大师在纸上画了一行n个格子,要小明和他交替往其中填入字母。1. 轮到某人填的时候,只能在某个空格中填入L或O2. 谁先让字母组成了“LOL”的字样,谁获胜。3. 如果所有格子都填满了,仍无法组成LOL,则平局。小明试验了几次都输了,他很惭愧,希望你能用计算机帮他解开这个谜。本题的输入格式为:第一行,数字n(n&lt;10),表示下面有n个初始局面。接下来,n行,每行一个串,表示开始的局面。  比...

一个吃水不忘挖井人的博客。希望能帮助到你 794

VS2019项目使用CGAL6.1配置教程详细步骤

在VS2019项目中使用CGAL详细步骤

插件开发 331

填字母游戏(博弈论+DFS)

填字母游戏(博弈论+DFS) 问题描述: 小明经常玩 LOL 游戏上瘾,一次他想挑战K大师,不料K大师说:   “我们先来玩个空格填字母的游戏,要是你不能赢我,就再别玩LOL了”。   K大师在纸上画了一行n个格子,要小明和他交替往其中填入字母。   并且:   1. 轮到某人填的时候,只能在某个空格中填入L或O   2. 谁先让字母组成了“LOL”的字样,谁获胜。   3. 如果所有格子都填满了,仍无法组成LOL,则平局。   小明试验了几次都输了,他很惭愧,希望你能用计算机帮他解开这个谜。 输入格式  

qq_34701775的博客 649

基于C#开发ABB机器人上位机系统:从操作控制到数据交互的全方位实现

ABB工业机器人是世界领先的自动化设备之一,广泛应用于焊接、装配、搬运、喷涂、包装等多个行业。机器人控制器:用于控制机器人运动、路径规划、状态监控等。上位机系统:提供人机交互界面,允许操作员与机器人进行交互,实现实时控制、参数调整和数据分析。上位机系统通过与机器人控制器通信,采集机器人状态数据,发送控制指令,实现远程监控和控制操作。通过高效的操作界面和数据交互,可以大大提高机器人的工作效率和系统的可维护性。基于C#开发ABB机器人上位机系统,能够实现高效的机器人控制与实时数据交互。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1179

车载以太网-TC8测试

TC8测试的用例数量 TC8测试基本流程 TC8测试内容

天赐好车的博客 3618

五.博弈问题的思路

1. 日期与星期大数学家高斯有个好习惯:无论如何都要记日记。他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。在高斯发现的一个重要定理的日记上标注着:5343,因此可算出那天是:179...

张某某。的博客 714

机器人中的数值优化(十五)——PHR增广拉格朗日乘子法

本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考,主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等,本系列文章篇数较多,不定期更新,上半部分介绍无约束优化,下半部分介绍带约束的优化,中间会穿插一些路径规划方面的应用实例

慕羽★的博客 2002

蓝桥杯国赛2015-2020年真题全解析:从A组到C组,一网打尽所有考点

本文深度解析2015-2020年蓝桥杯国赛真题,系统剖析A、B、C三组赛题的难度阶梯与核心考点。内容涵盖动态规划、搜索算法、图论等关键算法的高阶策略与实战代码,并提供从真题拆解到赛场发挥的完整备赛指南,帮助选手高效备考,精准提升竞赛能力。

echo99的专栏 472

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

第八届决赛 —— 填字母游戏

K大师在纸上画了一行n个格子,要小明和他交替往其中填入字母。1. 轮到某人填的时候,只能在某个空格中填入L或O2. 谁先让字母组成了“LOL”的字样,谁获胜。3. 如果所有格子都填满了,仍无法组成LOL,则平局。小明试验了几次都输了,他很惭愧,希望你能用计算机帮他解开这个谜。本题的输入格式为:第一行,数字n(n&lt;10),表示下面有n个初始局面。接下来,n行,每行一个串,表示开始的局面。  比...

Pluto 2186

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

1.[每日算法题] --最优打字策略

1.[每日算法题] --最优打字策略 解题思路1: 1.首先遍历字符串的长度,这个是最小的按键次数 2.判断连续两个输入的状态,遍历字符串(需要额外的按键次数) (1)首先因为默认小写输入,设置大小写状态k=0; (2)如果本次输入为大写状态且k = 0,按键次数需要额外增加一次,如果下一个输入仍然为大写,需要修改k = 1,如果下一个输入为小写,则保持k=0的状态 (3)如果本次输入为小写状态且k = 1,按键次数需额外增加一次,如果下一个输入仍为小写,修改k = 0,如果下一个输入为大写,这需要修改

chengjinpei的博客 1076

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

博弈问题的思路(填字母游戏(平局博弈))

填字母游戏: K大师在纸上画了一行n个格子,要小明和他交替往其中填入字母。 1. 轮到某人填的时候,只能在某个空格中填入L或O 2. 谁先让字母组成了“LOL”的字样,谁获胜。 3. 如果所有格子都填满了,仍无法组成LOL,则平局。 小明试验了几次都输了,他很惭愧,希望你能用计算机帮他解开这个谜。 本题的输入格式为: 第一行,数字n(n&lt;10),表示下面有n个初始局面。 接下来,n...

qq_36717487的博客 769

一个经典的字母排列算法

最近在研究一个问题,自己尝试些写了一个算法: 问题描述:给出一段字符,比如[a,b,c,d……],输出任意长度大于n的字符组合 分析:首先确立数学模型。这个问题的本质是排列问题,即:AL2+AL3+ …… +ALL。既然是排列问题,就应该按照排列的思维来进行处理这个问题。首先不去分析具体的实现细节,遵循着从整体到局部的思想,先确立程序,然后在确立算法与数据结构。从上面的描述中,可以...

weixin_30483697的博客 390

博弈论游戏(一)

取石子问题 1、巴什博弈 一堆石子,有n个,两个人轮流取,每次至少取1个,至多取m个,拿走最后一个石子的人获胜 假设一堆石子有 n=m+1 由于一次只能取m个,无论先手取多少个,后手总能拿走剩余的,这时一定是先手负 于是找到取胜规则: 一对石子 n=(m+1)*r+s 对于先手应该先取走s个,设后手取走k个,先手再取走 m+1-k 剩余的石子个数为 (m+1)(r-1) 以后保持...

weixin_44988779的博客 1万+

填词游戏java_第八届蓝桥杯国赛 Java B组 第五题 填字母游戏(博弈论)

解题思路:因为是博弈论,所以我们要对先手的必胜态和必败态分析。1.首先我们看赢遇到的状态,就是给出的串的子串有LO*,*OL,L*L这三种情况(就叫福利局吧~)。都可以直接填出LOL,获胜。2.先手必败的情况是什么?就是先手的剩余可填充子串是L**L这样类型。(不论怎么填,都会给对手造成上面的三种子串类型的福利局)换而言之,除去开局就赢的特殊情况,对任何类型字符串败方剩余可填充子串一定会遇到L**...

weixin_31313629的博客 301

蓝桥杯-填字母游戏

/* 蓝桥杯填字母游戏 80分代码 很明显一道无偏博弈论问题,这种问题要么暴力要么找规律呗 规律还是很好找的(虽然我应该就找到了一部分),找不出现平局的情况即可 只要出现这种情况就一定能分出胜负(其实样例已经给你了) 那就是L**L先填这两个*之一的人输(至于为啥自己想吧) 然后能成为L**L的情况还有两种 那就是***L和L***因为都要往必胜去肯定都会填入L 找到这种必胜情况了再看还有多少个位置给你填 先填L**L的人输 不过代码是80分的, 想必是还有一种必胜情况或者是能转换成必胜的情况没找到吧,

a892573486的博客 439

蓝桥杯 历届试题 填字母游戏(记忆化搜索)

问题描述 小明经常玩 LOL 游戏上瘾,一次他想挑战K大师,不料K大师说: “我们先来玩个空格填字母的游戏,要是你不能赢我,就再别玩LOL了”。 K大师在纸上画了一行n个格子,要小明和他交替往其中填入字母。 并且: 1.1.1.轮到某人填的时候,只能在某个空格中填入L或O 2.2.2.谁先让字母组成了“LOL”的字样,谁获胜。 3.3.3.如果所有格子都填满了,仍无法组成LOL,则平局。 小明试验了几次都输了,他很惭愧,希望你能用计算机帮他解开这个谜。 输入格式 第一行,数字n(n<10),表示下面有

xcatf的博客 592

填字母游戏

对于给出的字符串进行深度优先,尝试每一种走法,如果碰到能赢的走法则返回1。如果碰到平局和输的情况则继续尝试,直到尝试完每一种走法。,此外利用动态规划的想法。对搜索过程中的结果进行记录;在搜索前确认是否搜索过这个字符串,如果有记录则直接返回结果。1、当前搜索的字符串已经搜索过了;3、当前搜索的字符串已经没有空位。4、其余情况依次对空位进行遍历。2、当前搜索的字符串出现。

weixin_57084558的博客 182

博弈论(游戏)

其中 S->S' 表示状态 S 能到达状态 S' , mex 是 minimum excludant 的简称,即第一个未出现的非负整数, 即 S 状态的 SG 值为 (小于此状态所能到达的所有状态的SG值) 的最大值。则可以推知 N-position 状态的SG值必然 >0 , P-position 状态的SG值必然 ==0;对于任何一种可能的状态, 合法的移动集合只取决于这个状态本身, 不取决于何人操作、以前的任何操作、骰子的点数或其他因素。规定了合法的状态转移, 且所有规定对双方一样生效。

Mortaiy的博客 346

创造课堂之经典博弈游戏(Game)

博弈理论是研究决策者之间相互作用的数学和逻辑理论。在博弈理论中,决策者被称为“玩家”,他们通过制定策略来最大化自身利益。

nihaoakekeke的博客 2326

蓝桥杯:填字母

题目: 轮到某人填的时候,只能在某个空格中填入L或O 谁先让字母组成了“LOL”的字样,谁获胜。 如果所有格子都填满了,仍无法组成LOL,则平局。 小明试验了几次都输了,他很惭愧,希望你能用计算机帮他解开这个谜。 本题的输入格式为: 第一行,数字n(n<10),表示下面有n个初始局面。 接下来,n行,每行一个串,表示开始的局面。 比如:“******”, 表示有6个空格。“L****”,...

Buns.的博客 197
上一篇: 经典算法之博弈论 取球博弈
下一篇: 经典算法之博弈论 高僧斗法
striner
博客等级 码龄9年 153粉丝 99原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值