我正在编写一个旅行商程序,它是计算所有点之间的距离,并使用 BRUTE Force 方法确定最短距离。这不是家庭作业:)
我的方法是首先使用 std next_permutation 函数生成所有可能的点排列。
使用 std next_permutation 函数将生成输出订单:
(假设有3个点)
123
132
213
231
312
321
(如果有 4 个点,则相同)
1234
1243
...
4312
4321
但是由于重复,程序很慢,例如123的距离与321的距离相同(虽然我没有运行两次计算,但我已经将每个距离保存到一个结构中)。在我消除重复之后,让我们用 3 个点收回示例,输出现在将变为
123
132
213
节省至少一半的工作,随着点数的增加更多。我已经写了一些替代方法来消除重复的命令,但是不知道如何在代码中表达出来(帮助)。
如果需要,我将在此处发布我想出的几个替代方案。
如果有人可以以伪代码的形式发布您的想法,我该如何消除重复的订单。谢谢!