最低成本算法

时间:2015-09-30 08:30:10

标签: c algorithm

我在一场比赛中遇到了这个问题,并且想不出一种算法,而不是用蛮力的方法来检查和计算字符串中每个数字的成本,然后输出最低成本。

给出由数字(0-9)组成的字符串,并给出整数query。我们需要确保字符串(0-9)中的任何数字重复> = query次。这是通过将字符串中的个别数字替换为另一个数字来完成的,操作的成本是替换数字与我们要替换的数字之间的差异。找出最低成本,以确保字符串> = query次数中至少存在一个数字。

这有一个很好的算法吗?

1 个答案:

答案 0 :(得分:3)

您不需要初始字符串 - 您只需要在其中满足每个数字的次数。因此,您可以将字符串转换为10个整数的数组 - 字符串中每个数字的满足次数。从那里你可以使用类似蛮力的东西 - 对于每个数字X,假设你想要至少有Q(查询)X-s。迭代剩余的数字并贪婪地首先将数字转换为接近X的数字(再次在数组而不是原始字符串中进行),您不需要实际转换只需考虑满足给定数字的次数。这个算法最终会以O(10 ^ 3 + n)的顺序复杂化,这和我想象的一样好。

相关问题