Chomp 游戏

2023-10-10 03:20
文章标签 游戏 chomp

本文主要是介绍Chomp 游戏,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

先来一道简单的博弈:Chomp(水题勿喷)



Problem C - Chomp

 

[Description]

Chomp两个人在巧克力块上玩的奇怪游戏。

两个人轮流在巧克力上选择一小块,然后吃掉它上面和右边所围成的所有巧克力块。

如在一个3*3的巧克力块上,依次选择(2, 2) (1, 3) (3, 1) (1, 2) (2, 1)如下图所示

 

左下角的巧克力是坏的,所以谁吃到了那块就输了。

游戏在一个3*N的巧克力上玩,三列上的巧克力分别为p, q, r

现告诉你一个状态,并且当前到你的回合,你需要编写一个程序看看你能不能赢,如果能赢,当前这一步应该选择哪块来吃?

 

[Input]

第一行一个整数P,表示数据组数。

后面每行第一个数K,表示数据编号。然后三个整数p, q, r

 

[Output]

对于每组数据,先输出数据编号K

如果能赢则输出 ‘W’,然后再输出此回合应选择哪一块(答案可能不唯一);

如果不能赢则输出 ‘L

 

[Sample Input]

4

1 3 3 3

2 3 1 0

3 3 2 0

4 97 64 35

 

[Sample Output]

1 W 2 2

2 W 3 1

3 L

4 W 51 1

 

[Hint]

1 <= P <= 1000 

100 >= p >= q >= r >= 0(应该都看出来是博弈了,所以考虑两个人都很聪明)


这道题并不难,数据范围也很小,但本人依然光荣滴T掉了。。。


算法是记忆化搜索,用dp[i][j][k]表示第一列还剩i块,第二列还剩j块,第三列还剩k块的时候是必胜还是必败。

若必胜,则将下一个选择的位置用hash存下,并返回。核心代码如下:


int dfs(int i,int j,int k)
{if(dp[i][j][k]!=-1)return dp[i][j][k];//只要当前所有选择中有一个选择后的下一个局面必败,则当前必胜for(int o=1;o<i;o++){int uu=min(o,j),vv=min(o,k);if(dfs(o,uu,vv)==fail){return dp[i][j][k]=o*3;}}for(int o=0;o<j;o++){int uu=min(o,k);if(dfs(i,o,uu)==fail){return dp[i][j][k]=o*3+1;}}for(int o=0;o<k;o++){if(dfs(i,j,o)==fail){return dp[i][j][k]=o*3+2;}}//无论怎么选择都败,返回败	return dp[i][j][k]=fail;
}


那么为什么会T掉呢?原因在这行代码:


for(int _idx=1;_idx<=T;_idx++)
{memset(dp,-1,sizeof(dp));//此处省略6行代码
} 



虽然是多组数据,但实际上只需要初始化一次就够了,状态是一定的,多次是肯定要T掉的。

这道题就完了。


(觉得搞OI细节还是很重要的。。。)


这篇关于Chomp 游戏的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/177586

相关文章

Python开发围棋游戏的实例代码(实现全部功能)

《Python开发围棋游戏的实例代码(实现全部功能)》围棋是一种古老而复杂的策略棋类游戏,起源于中国,已有超过2500年的历史,本文介绍了如何用Python开发一个简单的围棋游戏,实例代码涵盖了游戏的... 目录1. 围棋游戏概述1.1 游戏规则1.2 游戏设计思路2. 环境准备3. 创建棋盘3.1 棋盘类

国产游戏崛起:技术革新与文化自信的双重推动

近年来,国产游戏行业发展迅猛,技术水平和作品质量均得到了显著提升。特别是以《黑神话:悟空》为代表的一系列优秀作品,成功打破了过去中国游戏市场以手游和网游为主的局限,向全球玩家展示了中国在单机游戏领域的实力与潜力。随着中国开发者在画面渲染、物理引擎、AI 技术和服务器架构等方面取得了显著进展,国产游戏正逐步赢得国际市场的认可。然而,面对全球游戏行业的激烈竞争,国产游戏技术依然面临诸多挑战,未来的

火柴游戏java版

代码 /*** 火柴游戏* <p>* <li>有24根火柴</li>* <li>组成 A + B = C 等式</li>* <li>总共有多少种适合方式?</li>* <br>* <h>分析:</h>* <li>除去"+"、"="四根,最多可用火柴根数20根。</li>* <li>全部用两根组合成"1",最大数值为1111。使用枚举法,A和B范围在0~1111,C为A+B。判断</li>** @

国产游戏行业的崛起与挑战:技术创新引领未来

国产游戏行业的崛起与挑战:技术创新引领未来 近年来,国产游戏行业蓬勃发展,技术水平不断提升,许多优秀作品在国际市场上崭露头角。从画面渲染到物理引擎,从AI技术到服务器架构,国产游戏已实现质的飞跃。然而,面对全球游戏市场的激烈竞争,国产游戏技术仍然面临诸多挑战。本文将探讨这些挑战,并展望未来的机遇,深入分析IT技术的创新将如何推动行业发展。 国产游戏技术现状 国产游戏在画面渲染、物理引擎、AI

第四次北漂----挣个独立游戏的素材钱

第四次北漂,在智联招聘上,有个小公司主动和我联系。面试了下,决定入职了,osg/osgearth的。月薪两万一。 大跌眼镜的是,我入职后,第一天的工作内容就是接手他的工作,三天后他就离职了。 我之所以考虑入职,是因为 1,该公司有恒歌科技的freex平台源码,可以学学,对以前不懂的解解惑。 2,挣点素材钱,看看张亮002的视频,他用了6000多,在虚幻商城买的吸血鬼游戏相关的素材,可以玩两年。我

nyoj 1038 纸牌游戏

poj 的一道改编题,说是翻译题更恰当,因为只是小幅度改动。 一道模拟题,代码掌控能力比较好,思维逻辑清晰的话就能AC。 代码如下: #include<stdio.h>#include<string.h>#include<algorithm>using namespace std;struct node{char c[5];int rk;char da[5];int nu

如果出一个名叫白神话悟空的游戏

最近黑神话由于与原著不符引起了原著派的争议。 所以我在摸鱼的时候想到如果游科或者某个别的公司“痛改前非”不夹带私货完全复刻吴承恩百回版剧情制作一个“重走西游路”的游戏,会有一个什么样的销量?(设定为原著派已经多方渠道认证,此游戏的确没有夹带私货,绝大部分复刻了原著剧情) 游戏玩法我想了几类 超长线性有岔路蜈蚣形状地图,蜈蚣的腿部是探索区域和支线,重走西游路线,开篇就是开始取经前唐玄宗御弟cg

《黑暗之魂2:原罪学者》是什么类型的游戏 《黑暗之魂》可以在苹果Mac电脑上玩吗?

在宏大的世界观游戏中,《黑暗之魂2:原罪学者》脱颖而出,以其探索性和挑战性征服了全球玩家的心灵。下面我们来看看《黑暗之魂2:原罪学者》是什么类型的游戏,《黑暗之魂2:原罪学者》可以在苹果电脑玩吗的相关内容。 一、《黑暗之魂2:原罪学者》是什么类型的游戏 《黑暗之魂2:原罪学者》作为《黑暗之魂2》的增强版和重制版,是一款FromSoftware制作、BANDAI NAMCO和FromSoft

简单取石子游戏~博弈

很坑爹的小游戏,至于怎么坑爹,嘎嘎~自己研究去吧~! #include<stdio.h>#include<windows.h>#include<iostream>#include<string.h>#include<time.h>using namespace std;void Loc(int x,int y);/*定位光标*/void Welcome(); /*创建欢迎界面*/

黑神话:悟空》增加草地绘制距离MOD使游戏场景看起来更加广阔与自然,增强了游戏的沉浸式体验

《黑神话:悟空》增加草地绘制距离MOD为玩家提供了一种全新的视觉体验,通过扩展游戏中草地的绘制距离,增加了场景的深度和真实感。该MOD通过增加草地的绘制距离,使游戏场景看起来更加广阔与自然,增强了游戏的沉浸式体验。 增加草地绘制距离MOD安装 1、在%userprofile%AppDataLocalb1SavedConfigWindows目录下找到Engine.ini文件。 2、使用记事本编辑