Я пытаюсь решить TSP в C ++ с помощью многомерного массива и получаю сообщение об ошибке преобразования типов.
Я устал от C ++, так как не использовал его несколько лет, поэтому, чтобы переучиться, я решил попробовать несколько решений Traveling Salesman. Первое, что я использую, использует многомерный массив для хранения точек, которые назначаются случайным образом. Эта часть работала нормально, поэтому я перешел к формуле расстояния. Я создал вспомогательную функцию для базовой формулы расстояния, которая принимает 2 массива в качестве входных данных, которая прекрасно работает самостоятельно, а затем создал функцию, чтобы найти общее расстояние для полного массива городов. Он принимает массив значений типа double и целое число, представляющее общее количество городов, затем перебирает массив, находя расстояние для каждой точки и складывая их вместе.
Вот объявление переменной и случайное присвоение точки
int numCities = 10;
double cities[numCities][2];
//Creates random(unseeded) points
for(int i = 0; i < numCities; i++){
for(int j = 0; j < 2; j++){
cities[i][j] = (rand() % 100) + 1;
}
}
Вот строка, используемая для вызова функции
cout << distTotal(cities, numCities) << endl;
А вот функция и вспомогательная функция
//basic distance formula
double cityDist(double cityA[], double cityB[]){
return sqrt(pow((cityB[0]-cityA[0]), 2.0)+
pow((cityB[1]-cityA[1]), 2.0));
}
//calculate total distance of group of cities
double distTotal(double* points[], int num){
double total = 0;
for(int i = 0; i < num-1; i++){
total=total+cityDist(points[i], points[i+1]);
}
return total;
}
Так что в идеале это должно дать мне общее расстояние между всеми точками в базовом порядке, указанном здесь. Однако в настоящее время я получаю следующую ошибку:
ошибка: невозможно преобразовать 'double (*) [2] "в" double ** "для аргумента" 1 "в" double distTotal (double **, int) "
Если я правильно помню, это может быть связано с указателями, но я, честно говоря, недостаточно помню об указателях C ++, чтобы знать, как это исправить.
Любая помощь приветствуется, спасибо