poj(1390)——Blocks

博客探讨了POJ1390问题的解决策略,这是一个涉及动态规划和递归的记忆化编程挑战。题目要求通过消除相同颜色的方块来最大化得分,得分等于消除方块数的平方。文章介绍了状态转移方程`click_box(i,j,ex_len)`,表示在特定条件下消除方块后的最大得分,并详细解释了两种情况下的递归计算。博客最后指出,二维动态规划无法解决这个问题的全部情况。" 111926369,10538553,解决Selenium懒加载截图模糊问题,"['selenium', '前端测试', '网页截图', '懒加载技术', '自动化测试']
摘要由CSDN通过智能技术生成

题意:

就是给你总共n个方块,然后让你每次消去一些方块,然后获得的得分是消去方块数的平方。问最后游戏结束的时候得分最大是多少?

思路:

这道题是一道记忆性动归程序,主要是那个dp的状态转移方程有点难想。。。

首先,我们记click_box(i,j,ex_len):表示的是在第j个大块之后有ex_len长度的大块(大块就是相同颜色进行合并之后的块)且j的颜色和ex_len的颜色相同时,在这种情况下将i-j以及ex_len这些方块进行消除之后所得获得分数的最大值。

然后进行推:click_box(i,j,ex_len) : ①j和ex_len大块都被消去,那么最大的得分就是click_box(i,j-1,0)+(len[j]+ex_len)^2

②j和ex_len进行合并之后,不进行消去,而是往前面去寻找是否还有和它们颜色相同的方块,并再进行合并。

然后在这两种情况下进行递归就好啦~~

至于为什么二维是不行的,因为它无法限制第二种情况。

如有理解不清楚的,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值