Follow along with the video below to see how to install our site as a web app on your home screen.
Забелешка: This feature may not be available in some browsers.
Некое време се мислев за тежината на задачата и разгледвав неколку задачи. Меѓутоа судејќи според првата задача некои од задачите кои ги имав во план би ги решиле малкумина. Бидејќи се работи за почеток на CodeOpen се одлучив да поставам прилично лесна задача за да останат скоро сите во конкуренција. Подоцна ќе има и позаебани (ксило спремај се и ти).
кратко и јасно) (во однос наона најкраткиот да не ме препрашва некој, да можи да има два пата кои даваат решение ама различни по должина, ваша задача е да го најдите најкраткиот.) Морам да си реплицирам оти неможам да го попрам претходниот пост.
#######
#.#.#.#
#...#.#
#.#...#
#######
<---y---->
^ #######
| #П#.#К#
x #...#.#
| #.#...#
V #######
public class Main {
public static int rez[] = new int[100];
public static int brojac = 0;
public static String niza = "{";
public static String najdiPat(char[][] mapa, int px, int py, int kx, int ky) {
if (px == kx && py == ky) {
for (int r = 0; r < brojac; r = r + 2) {
niza += "(" + rez[r] + "," + rez[r + 1] + ")";
if (r + 2 == brojac) {
niza += "}";
} else {
niza += ",";
}
}
} else {
//dolu
if (mapa[px + 1][py] == ' ') {
px = px + 1;
mapa[px][py] = '?';
rez[brojac] = px;
rez[brojac + 1] = py;
brojac = brojac + 2;
najdiPat(mapa, px, py, kx, ky);
} else {
//desno
if (mapa[px][py + 1] == ' ') {
py = py + 1;
mapa[px][py] = '?';
rez[brojac] = px;
rez[brojac + 1] = py;
brojac = brojac + 2;
najdiPat(mapa, px, py, kx, ky);
} else {
//gore
if (mapa[px - 1][py] == ' ') {
px = px - 1;
mapa[px][py] = '?';
rez[brojac] = px;
rez[brojac + 1] = py;
brojac = brojac + 2;
najdiPat(mapa, px, py, kx, ky);
} else {
//levo
if (mapa[px][py - 1] == ' ') {
py = py - 1;
mapa[px][py] = '?';
rez[brojac] = px;
rez[brojac + 1] = py;
brojac = brojac + 2;
najdiPat(mapa, px, py, kx, ky);
} else {
//levo se vraka
if (mapa[px][py - 1] == '?') {
py = py - 1;
brojac = brojac - 2;
najdiPat(mapa, px, py, kx, ky);
} else {
//desno se vraka
if (mapa[px][py + 1] == '?') {
py = py + 1;
brojac = brojac - 2;
najdiPat(mapa, px, py, kx, ky);
} else {
//dolu se vraka
if (mapa[px + 1][py] == '?') {
px = px + 1;
brojac = brojac - 2;
najdiPat(mapa, px, py, kx, ky);
} else {
//gore se vraka
if (mapa[px - 1][py] == '?') {
px = px - 1;
brojac = brojac - 2;
najdiPat(mapa, px, py, kx, ky);
}
}
}
}
}
}
}
}
}
return niza;
}
public static void main(String[] args) {
char mapa[][] = {{'#', '#', '#', '#', '#', '#', '#'}, {'#', ' ', '#', ' ', '#', ' ', '#'}, {'#', ' ', ' ', ' ', '#', ' ', '#'}, {'#', ' ', '#', ' ', ' ', ' ', '#'}, {'#', '#', '#', '#', '#', '#', '#'}};
int px = 1;
int py = 1;
int kx = 1;
int ky = 5;
rez[brojac] = px;
rez[brojac + 1] = py;
brojac = brojac + 2;
System.out.println(najdiPat(mapa, px, py, kx, ky));
}
}
#include <iostream>
using namespace std;
int broj=0;
const int red=10;
const int kolona=10;
char Lavirint[red][kolona] =
{
{'#','#','#','#','#','#','#','#','#','#'},
{'#',' ',' ',' ',' ',' ','#',' ',' ','#'},
{'#',' ','#','#','#',' ','#',' ','#','#'},
{'#','P',' ',' ',' ',' ',' ',' ',' ','#'},
{'#','#','#','#','#',' ','#','#','K','#'},
{'#',' ',' ',' ',' ',' ',' ','#',' ','#'},
{'#',' ','#','#',' ','#','#','#',' ','#'},
{'#',' ',' ',' ','#',' ',' ',' ',' ','#'},
{'#',' ','#',' ',' ',' ','#',' ','#','#'},
{'#','#','#','#','#','#','#','#','#','#'}
};
void cistenje();
void barajLavirint(int, int);
int main()
{
for (int i=0;i<red;i++)
for (int j=0;j<kolona;j++)
if(Lavirint[i][j]=='P')
{
barajLavirint(i,j);
}
cout<<endl;
return 0;
}
void barajLavirint(int row, int col)
{
if( (row>0 && row<red) && (col>0 && col<kolona)) {
if( Lavirint[row][col] == 'K' )
{
cout<<broj<<endl;
}
if((Lavirint[row][col] == ' ')||( Lavirint[row][col] == 'P')){
Lavirint[row][col]='*';
broj++;
barajLavirint(row, col-1);
barajLavirint(row, col+1);
barajLavirint(row+1, col);
barajLavirint(row-1, col);
}
}
}
Како што разгледував алгоритми за пребарување во 2 димензионални полиња за кои имаше и доста добри имплементации ама беа огромни и некако ме мрзеше да ги анализирам до крај се решив за имплементација на "Depth first search" кој е доста прост, правилно решение а и најбрзо ќе даде во овој случај A* кој е малце изменета варијанта на depth first search и го дава најкраткиот пат. 
The article presents a simple technique to find the shortest path between two points in a 2D Maze. Similar applications use graphs in such situations but this article shows how this can be done without the headache of graphs. It uses a technique similar to breadth-first search.