【发布时间】:2011-06-06 22:52:57
【问题描述】:
我们得到一个形式为:RBBR 的字符串,其中 R - 红色和 B - 蓝色。
我们需要找到将颜色组合在一起所需的最少交换次数。在上述情况下,答案将是 1 以获得 RRBB 或 BBRR。
我觉得在这里对部分排序的数组进行排序的算法会很有用,因为简单的排序会给我们交换次数,但我们想要minimum 交换次数。
有什么想法吗?
据称这是this 的微软面试问题。
【问题讨论】:
-
闻起来像动态编程和 A* 风格的寻路在这里会很有用。
-
我对分类多种颜色的球所需的最少交换次数这一更普遍的问题感兴趣。我在回答中给出的算法对球的数量是线性的,但对颜色的数量是阶乘的(因为可能的目标字符串的数量是所涉及颜色的排列)。有没有更好的办法?
-
@Null Set:@bronzerbeard 写了一个引用 en.wikipedia.org/wiki/Dutch_national_flag_problem 的答案,这是关于对 3 色字符串进行排序的。也许这可能是一个起点。