问题描述
因此,我遇到了硬币收集者的问题,其中将几个硬币放置在尺寸为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 (将#修改为@)