我的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);