Я должен каким-то образом сгенерировать решение для лабиринта, используя реализацию стека из связанного списка. Лабиринт считывается из файла .txt и состоит из 0 для открытых пространств и 1 для стен. ‹- Уверены, что выход должен быть в нижней строке? Итак, эти три 0?
Алгоритм, который я пытаюсь использовать, следующий:
While Not At End
If Can Go North
Go North
ElseIf Can Go East
Go East
ElseIf Can Go South
Go South
ElseIf Can Go West
Go West
EndIf
Wend
То, как я пытался это сделать, основывалось на операциях ++, выполняемых в индексе массива. Я не знал, что оператор индекса массива [ имеет приоритет над ++, поэтому теперь мне нужно переосмыслить обходной путь. Прежде чем сделать это, я хочу убедиться, что этот метод вообще будет работать. Может ли кто-нибудь взглянуть на мой код алгоритма и дать обратную связь? (Примечание: мне все еще нужно добавить некоторый код для отслеживания пройденных путей, чтобы избежать некоторого типа бесконечного цикла)
bool notSolved = true;
int path = 0;
row = 0;
col = 0;
rowStack.push(row);
colStack.push(col);
while (notSolved){
//(from perspective of person looking at maze on screen)
if (maze[row--][col] == 0){//if you can go up, go up
rowStack.push(row);
colStack.push(col);
path++;
}
else if (maze[row][col++] == 0){//else if you can go right, go right
rowStack.push(row);
colStack.push(col);
path++;
}
else if (maze[row++][col] == 0){//else if you can go down, go down
rowStack.push(row);
colStack.push(col);
path++;
}
else if (maze[row][col--] == 0){//else if you can go left, go left
rowStack.push(row);
colStack.push(col);
path++;
}
if((maze[row][col] == 0) && (row == (size - 1))){//if we reached an exit
cout << "Solution Path:" << endl;
for (int i = 0; i < path; i++){
cout << "row:" << rowStack.top() << " col:" << colStack.top() << endl;
rowStack.pop();
colStack.pop();
}
notSolved = false;
}
}
Проблема с выполнением [ перед ++:
Любая помощь приветствуется, спасибо!