[C++]Znajdowanie najkrótszej drogi

0

Mam taki ciekawy projekt do zrobienia,mianowicie mam macierz/tablicę dwuwymiarową składającą się z pól o znaku 'B' lub 'C'.
BBBBCB
CCCBBC
BBCCBC
CBCBBB <-tak to przykładowo wygląda
Moim zadaniem jest znaleźć jak najkrótszą drogę poruszając się tylko po polach oznaczonych jako 'B',poruszać się tylko mogę w L,P,D,G i te pola muszą się stykać krawędziami.Próbowałem się bawić na samych tablicy i if-ami ale jednak trzeba się chyba zabrać za to z innej strony.Oczywiście rozmiar tablicy jak i układ są losowe.Jeśli macie jakieś ciekawe pomysły to byłbym wdzięczny.Aha zapomniałem wspomnieć ,że mam się dostać z krawędzi górnej do dolnej.

0

ifami? :D
Proponuje podejść do tego jak normalny człowiek i użyć odpowiedniego algorytmu grafowego.
Pytanie czy chcesz mieć dowolne rozwiązanie (BFS / DFS), możliwie dobre rozwiązanie (A*) czy chcesz mieć koniecznie optymalne rozwiązanie (algorytm Dijkstry).

0

A* + obliczanie dystansu przez Manhattan lub Euclidean.

Istnieje jeszcze A* + JPS (Jump-point search) ktory przyspisza szukanie kilkukrotnie.

Implementacja tego nie jest trudna.

http://www.policyalmanac.org/games/aStarTutorial.htm

nawet po PL jest

http://www.policyalmanac.org/games/aStarTutorial_pl.htm

1 użytkowników online, w tym zalogowanych: 0, gości: 1