鉴于两个字谜S1和S2,我们想要将S1 anagram转换为S2 anagram。我们需要找出最低数量的邻接互换。
例如:S1:CAT和S2:ACT。此处交换的最小数量仅为1.将C交换为A以获得S2。
我们如何使用动态编程来完成它。有可能吗?
答案 0 :(得分:4)
获得最佳解决方案的一种方法是将问题减少到shortest path problem 。
在这里,每个顶点都是使用给定字母的一个可能的字谜。当且仅当您可以通过单次交换从一个顶点移动到另一个顶点时,存在两个顶点(字谜)之间的边缘。
找到从输入anagram到所需路径的最短路径将为您提供最佳路径数。
未加权图表的最短路径问题可以通过BFS,bi-directional BFS或A* algorithm来解决。