У меня есть этот алгоритм, который является псевдокодом для алгоритма dijkstra для теории графов. Первое, что происходит, это базовый цикл.Comma Operator с индексированием 2D-массивов
visitedSet[0] = true //visitedSet is a array of bools
for (int i = 1; i <= numberNodes; ++i)
{
distanceArray[i] = adjacencyMatrix[0,i];
//distanceArray is 1D with size of fifty
//adjacencyMatrix is 2D with size of fifty
//Both arrays hold values of unsigned ints
}
Вот массив определений
enum GraphLimit300 {MAX_NODES = 50};
unsigned int adjacencyMatrix[MAX_NODES][MAX_NODES];
unsigned int distanceArray[MAX_NODES];
Visual Studio дает мне массив, говоря, что я не могу присвоить массив беззнаковых целых чисел в указатель. Я посмотрел онлайн, что с помощью оператора запятой в основном в этом случае выбрасывает первый случай, 0
и обрабатывает его как distanceArray[i] = adjacencyMatrix[i];
Что не имеет для меня смысла, так как adjacenyMatrix
- это 2D-массив. Мне просто интересно, что дает мне эту ошибку компиляции и получает больше информации о том, почему, потому что я в основном просто копирую в именах переменных, где в основном говорит псевдокод.
псевдокоде:
S = { 1 }
for (index = 2; index <= N; ++ index)
D[ index ] = C[ 1, index ]
for (index = 1; index <= N – 1; ++ index)
Choose a vertex v in V – S such that D[ v ] is a minimum
Add v to S
for each vertex w in V – S do
D[ w ] = min(D[ w ], D[ v ] + C[ v, w ])
выше псевдокод использует списки для представления их массивов они по какой-то причине начинаются с 1, поэтому я изменил его, чтобы начать с 0 в моем коде.
Вы не показываете нам объявления 'distanceArray' и' adjacencyMatrix', что делает ваш вопрос неопровержимым. –
Я бросил комментарии в первом блоке кода, буквально говоря, как они объявлены. Теперь я поставлю это в отдельный блок кода. @CareyGregory – DrakeJacks
'[0, i]' <- Я не знаю, почему вы делаете это вообще. Он не служит никакой цели и выглядит так, будто вы просто сделали опечатку, когда вы хотели набрать '[0] [i]'. –