我想从 TopCoder 解决这个问题,其中给出了一个字符串,并且在每个步骤中,您必须将所有出现的字符(您选择的)替换为另一个字符(您选择的),以便在最后步骤你得到一个回文。问题是确定替换的最小总数。
到目前为止的想法: 我可以确定每一步之后的字符串只是图中的一个节点/顶点,并且每条边的成本是该步骤中进行的替换次数,但我不知道如何使用贪婪那(这绝对不是最小生成树问题)。我认为识别所有可能的节点和边缘成本并将问题转换为最短路径问题是没有意义的。另一方面,我认为在每一步中,将字符 X 替换为冲突次数最多的字符是有意义的,而字符 Y 与字符串中出现最多的 X 冲突。
无论如何,我也无法证明它有效。我也无法确定任何已知问题。有任何想法吗?