微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

硬币收集者的问题,允许两个回溯步骤

如何解决硬币收集者的问题,允许两个回溯步骤

因此,我遇到了硬币收集者的问题,其中将几个硬币放置在尺寸为n x m的矩阵单元中。每个单元上具有不同数量的硬币。一个人在矩阵的左上角单元中(意思是0,0),他必须收集尽可能多的硬币,但他只能移到他右侧(i,j + 1)或向下(i + 1,j),任务是使用尽可能多的硬币进入单元格(n,m)。

我知道可以通过使用动态编程和 设置循环

F(0,0) = F(0,0)

F(0,j) = F(0,j) + F(0,j-1) for 1<=j<=m 

F(i,0) = F(i,0) + F(i-1,0) for 1<=i<=n

F(i,j) = F(i,j) + max(F(i-1,j) + F(i,j-1))  for 1<=i<=n,1<=j<=m 

然后遍历所有单元格,然后简单地得到F(n,m)处的值

我忘了提及这一点,但我们知道每个单元中有多少枚硬币。因此,我们无需通过旅行发现这些信息。

无论如何,这个人仍然可以回溯两步,这两个步既可以分别在两个不同的点上分别作为一个步骤,也可以在单个点上一起作为一个大步骤。意思是在道路上的某个地方,他可以前进或后退并在该单元上收集硬币,然后再次向后移动。我将如何对此建模?什么是正确的方法?我不一定对实现此功能所需的代码感兴趣,而与对实现此目标的正确理论或方法那样感兴趣,也就是说我不介意以任何语言阅读代码

预先感谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。