博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第4-8课:方块消除游戏
阅读量:3572 次
发布时间:2019-05-20

本文共 565 字,大约阅读时间需要 1 分钟。

前面基础部分我们介绍过简单的串模型的动态规划,在这个系列中,我们又介绍了区间动态规划模型、状态压缩动态规划模型和线性动态规划模型。我们用的算法实现都是尽量使用状态递推关系式直接用递推的方法,大家可能都忘了“备忘录(或状态记忆)”也是动态规划,这一课我们将讲解如何用这种方法来求解方块消除游戏的算法实现。

问题介绍

Jimmy 最近迷上了一款叫做“方块消除”的游戏。游戏的规则是:n 个带颜色的方块排成一列,颜色相同的方块连成一个区域(如果两个相邻的方块颜色相同,则这两个方块属于同一个区域)。游戏时,可以选择一个区域消除,如果消除区域的方块数为 x,则可以得到 $x^2$ 的分数。方块消除后右边的方块自动向左移动。游戏虽然很简单,但是要得高分也不容易,那么问题来了,最高可以得多少分?

这个游戏的有趣之处在于消除方块后自动移动方块,方块移动可能会拼成新的连续区域。消除两个独立的相同颜色方块,可以得 $1^2+1^2=2$ 分,如果这两个独立的同色方块能连成一个连续的区域,则消除这个连续区域可得 $2^2=4$ 分。因此,尽可能的形成连续的区域进行消除,才是得高分的途径。

enter image description here

图(1)消除方块问题示意图

假如给出的颜色方块的序列如图(1)所示,这个序列能得的最高分是 $4^2+3^2+2^2=29$ 分,两个蓝色方块最后消除。

转载地址:http://vdcgj.baihongyu.com/

你可能感兴趣的文章
N10-sql注入(information_schema注入)
查看>>
N1-Kali虚拟机中SQLmap
查看>>
N11-sql注入(http头注入)
查看>>
N2-sqlmap初使用
查看>>
N12-sql盲注原理以及boolean盲注案例实现
查看>>
N13-sqli盲注 基于时间型
查看>>
N1 技术心得 2019-6-26
查看>>
N1-环境配置
查看>>
N2-审计方法与步骤
查看>>
N3-常见的INI配置
查看>>
代码审计 N4 常见危险函数和特殊函数(一)
查看>>
MySQL笔记
查看>>
计算机运算方法之(原码 补码 反码 移码)
查看>>
计算机组成原理之(二进制与十进制互相转换,数的定点表示与浮点数表示)例题:设浮点数字长16位,其中阶码5位(含有1位阶符),尾数11位(含有1位数符)
查看>>
选择排序(java代码实现)
查看>>
插入排序
查看>>
哈夫曼树java代码实现
查看>>
快速排序
查看>>
vue路由高亮的两种方式
查看>>
vue router 报错: Uncaught (in promise) NavigationDuplicated {_name:""NavigationDuplicated"... 的解决方法
查看>>