给定一个n个不同项的列表,我如何遍历这些项的每个排列,一次只交换一对值?(我假设这是可能的,当然感觉应该是这样的。)
我正在寻找的是一个迭代器,它产生下一对要交换的项的索引,这样如果迭代n!-1次,它将遍历n!按某种顺序排列列表。如果再次迭代可以将列表恢复到其起始顺序,这将是一个额外的好处,但这不是必需的。示例:-对于3个元素,您可以将最后一个元素与第一个和第二个元素交替交换,以循环遍历排列,即:(a B c)交换0-2 => (c B a) 1
输入:['A',' B ',5,'A','C',2,'B','C',5],找到从A到B的路径,输出:'A','C','B',给出10分。这方面的时间复杂性可能是N!在全连通图中,因为我们正在尝试所有的排列。
然而,我认为我们可以通过在回溯的同时进行修剪来优化它。我们跟踪每个节点可以得到的最高点。最坏的情况还是<