算法 – 最小化转换成本

我提出了以下问题,但我无法找到解决方案.

声明:

有N个酒杯.假设每个酒杯都具有无限的容量.每个玻璃杯中的葡萄酒量是一个正的非零整数,单位是毫升.类型1的移动定义为从玻璃i向玻璃j转移1ml. 2型的移动定义为从玻璃中丢弃1ml.类型1的所有移动都有一个成本.类型2的所有移动都具有k的成本.
鉴于每种玻璃中的葡萄酒初始量,我们需要对这两种葡萄酒进行一些移动,以确保每种玻璃中的葡萄酒量是一个素数(或零).打印此类转换的最低成本.

如何解决这个问题?
对可能的解决方案有什么想法?

最佳答案 这种类型的问题可通过动态编程解决,类似于计算字符串的最小编辑距离,您可以使用
Hirschberg’s Algorithm来解决该问题.

这里实际上有两个阶段.首先,您必须找到候选素数组合,然后计算每个候选者的最小编辑距离.编辑距离最短的那个是答案.

例如,假设您有总计,如16 14 8.第一步是您必须枚举每个可能的素数组合:{37 0 0} {31 7 0}等.然后您使用Hirschberg算法计算最小编辑与这些候选人的距离.

点赞