将给定的字谜制作成另一个字谜所需的最小交换次数

时间:2013-11-05 08:45:51

标签: algorithm dynamic-programming

鉴于两个字谜S1和S2,我们想要将S1 anagram转换为S2 anagram。我们需要找出最低数量的邻接互换。

例如:S1:CAT和S2:ACT。此处交换的最小数量仅为1.将C交换为A以获得S2。

我们如何使用动态编程来完成它。有可能吗?

1 个答案:

答案 0 :(得分:4)

获得最佳解决方案的一种方法是将问题减少到shortest path problem

在这里,每个顶点都是使用给定字母的一个可能的字谜。当且仅当您可以通过单次交换从一个顶点移动到另一个顶点时,存在两个顶点(字谜)之间的边缘。

找到从输入anagram到所需路径的最短路径将为您提供最佳路径数。

未加权图表的最短路径问题可以通过BFSbi-directional BFS或A* algorithm来解决。