2017-10-28 30 views
0

我陷入了一个问题。总体问题陈述很大。我已经解决了它的其他部分。 卡在一块。组合字符串中相同字符的最小开销

给定一个包含一些破折号(' - ')的字符串和一些字符可以说('A')。此外,我们还得到C的代价,将角色转移到相邻的地方。我们需要找到所有'A'字符被分组的最小成本。

例1:AA - A --- A和成本= 10

最低成本组的所有“A的将是:80

例2:AAAA ------ A和成本= 10

最低成本组的所有“A的将是:60

+0

你用铅笔和纸以及一副纸牌解决了这样的问题。用心代表A,用棍棒代表破折号。然后开始移动,跟踪每一步。一旦你手工解决了这个问题,你应该写下你是如何做到的。然后你可以编写代码。请记住,你解决了这个问题,然后你编写代码来实现你的解决方案。 –

回答

2

提示:对于成本是最小的可能,中值作为中的一个(第二或在第一个实施例的4第三,的第三5在你的第二个例子中)可以留在原地。使用这种方法,您可以计算O(n)中的成本,其中n是字符串的长度或As的数量,无论是哪种输入格式。

+0

可留在原地吗?你能详细解释一下吗? – FallAndLearn

+0

@FallAndLearn“可以留在原地”=“永远不会转移到相邻的地方”。 – Gassa

2

我不认为这个问题需要动态编程。 您只需将所有A移向中位数A,因为这是所有A之间的最小总距离。

只要确保不要移动媒体A.如果中位数A移到右边,那么A的左边每一个都必须再移动一步,而A的右边每一个都会有少移一步。这应该取消,但您已经添加了一个不需要的步骤。