猿问

将向量保存在列表中的方法

我的 TSP 算法有问题。我将插入代码并解释:


List listOfPermutations = new ArrayList();

while (cont.compareTo(deleteRutes) < 0) { 

    listOfPermutations.add(indexOfCities);

    nextPermutation(indexOfCities);

    ....

我遇到的问题如下,我的想法是在一个列表中插入所有可能的排列(数组),但问题是列表总是取数组的相同值,这是合乎逻辑的,因为 indexOfCities 数组只是一。我已经退还了一段时间,我不知道如何解决。有人能帮我吗?


芜湖不芜
浏览 141回答 1
1回答

杨魅力

indexOfCities持有对数组的引用。这个相同的引用作为项目添加到listOfPermutationswithlistOfPermutations.add(indexOfCities);在每次循环迭代中。然后数组被修改为nextPermutation(indexOfCities);在每次循环迭代中。所以存储的引用都指向同一个修改过的数组。为了解决这个问题,在加入数组的副本indexOfCities来listOfPermutations代替。例如像这样:int[]&nbsp;indexOfCitiesAux&nbsp;=&nbsp;indexOfCities.clone(); listOfPermutations.add(indexOfCitiesAux);
随时随地看视频慕课网APP

相关分类

Java
我要回答