Dqfjc. 2048 移动
时间限制:1.0s 内存限制:256.0MB 代码提交间隔:1分钟(现在可以提交)
试题来源:rookiepig
问题描述
《2048》是一款比较流行的数字游戏,最早于2014年3月20日发行。原版2048首先在GitHub上发布,原作者是Gabriele Cirulli,后被移植到各个平台。
游戏的玩法可以简单描述如下:
- 玩家进入游戏会看到一个方形棋盘格子,每个棋盘格子可以看作一个方块,有的格子会有数字,有的格子为空。标准版本的《2048》玩家开始时会有2个方块是数字2。
- 每次可以选择上下左右其中一个方向去滑动,每滑动一次,所有的数字方块都会朝滑动的方向靠拢,系统会在空白的地方随机出现一个新的数字方块(标准版本随机出现的新方块为数字2,随着移动步数变大会出现4、8等方块)。相同数字的方块在靠拢相撞时会相加(注意:一次移动相邻的方块最多只能合并一次,认真观察下面例子中最后一行在向右移动后的棋盘变化情况)。不断的叠加最终拼凑出2048这个数字就算成功。
我们可以用一个二维数组表示棋盘格子的状态,举个4∗4棋盘大小的移动例子,0代表空白的方块,为了简化问题我们暂不考虑随机产生新的方块。
- 假设当前棋盘状态:
2 0 0 0 0 2 2 0 0 2 2 2 2 2 2 2
Data
- 第一步选择向右移动,棋盘状态