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

List listOfPermutations = new ArrayList();
while (cont.compareTo(deleteRutes) < 0) {
    listOfPermutations.add(indexOfCities);
    nextPermutation(indexOfCities);
    ....


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

最佳答案

indexOfCities保存对数组的引用。该相同的引用作为项目添加到listOfPermutations中,

listOfPermutations.add(indexOfCities);


在每个循环迭代中。

然后用

nextPermutation(indexOfCities);


在每个循环迭代中。因此,所有存储的引用均指向同一修改后的数组。

要解决此问题,请在indexOfCities中将数组的副本添加到listOfPermutations中。例如。像这样:

int[] indexOfCitiesAux = indexOfCities.clone();
listOfPermutations.add(indexOfCitiesAux);

09-27 10:11