어떤 방법 으로든 스택의 링크 된 목록 구현을 사용하여 미로에 대한 솔루션을 생성합니다. 미로는 .txt 파일에서 읽혀지며 열린 공간에는 0, 벽에는 1로 구성됩니다. < - 출구가 맨 아래 행에 있어야하나요? 그럼 3 개의 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;
}
}
문제 :
감사 어떤 도움을 주셔서 감사합니다!
재귀는이 중 하나입니다. – Erix
특정 질문이 있으십니까? –
알고리즘이 특히 좋다고 생각하지 않습니다. 예를 들어 수평 터널에서 오른쪽 벽을 돌면, 오른쪽에서 왼쪽으로 영원히 튀어 오를 수 있습니다. –