Na jepet një grup karakteresh 2D dhe, duke u nisur nga një pikë e caktuar, duhet të gjejmë një 'dalje', e cila është një '0' në perimetrin e matricës së dhënë. Programi kthehet i vërtetë nëse gjendet një shteg, i cili do të printojë një mesazh kur ta ekzekutoj në metodën time kryesore më vonë. Mund të lëvizim vetëm lart, majtas, poshtë ose djathtas në një '0' të afërt. Tashmë jam përpjekur ta bëj këtë punë, megjithatë kam një gabim memorie, që ndoshta do të thotë se jam mbërthyer në një lak të pafund. Unë jam përpjekur ta zbatoj këtë projekt duke përdorur një Stack që kam bërë duke përdorur Nodes, të cilin e kam zbatuar edhe vetë duke përdorur gjenerikë, si kjo: p.sh.
StringStackImpl<int[][]> s = new StringStackImpl<>();
në një skedar tjetër .java. Këto funksionojnë mirë. Unë u përpoqa të ruaj koordinatat e një karakteri në matricë si kjo:
StringStackImpl<int[]> s = new StringStackImpl<>();
s.push(new int[]{i, j});
Këtu është kodi im:
private static boolean hasExit(char[][] maze, int n, int m, int i, int j) {
int d = -1;
boolean[][] visited = new boolean[n][m];
for (int a = 0; a < visited.length; a++) {
for (int b = 0; b < (visited[a]).length; b++) {
visited[a][b] = false;
}
}
StringStackImpl<int[]> s = new StringStackImpl<>();
s.push(new int[]{i, j});
while (!(s.isEmpty())) {
int[] temp = s.peek();
d += 1;
i = temp[0];
j = temp[1];
if (((i == 0) || (i == n-1) || (j == 0) || (j == m-1)) && (maze[i][j] == '0')) {
return true;
}
if (d == 0) {
if ((i-1 >= 0) && (maze[i-1][j] == '0') && !(visited[i-1][j])) {
visited[i-1][j] = true;
s.push(new int[]{i-1, j});
d = -1;
}
}
else if (d == 1) {
if ((j-1 >= 0) && (maze[i][j-1] == '0') && !(visited[i][j-1])) {
visited[i][j-1] = true;
s.push(new int[]{i, j-1});
d = -1;
}
}
else if (d == 2) {
if ((i+1 < n) && (maze[i+1][j] == '0') && !(visited[i+1][j])) {
visited[i+1][j] = true;
s.push(new int[]{i+1, j});
d = -1;
}
}
else if (d == 3) {
if ((j+1 < m) && (maze[i][j+1] == '0') && !(visited[i][j+1])) {
visited[i][j+1] = true;
s.push(new int[]{i, j+1});
d = -1;
}
}
else {
s.pop();
d = -1;
}
}
return false;
}
}
EDIT: Punon tani, falë kendavidson! ‹3
i
dhej
është siint
. Puna është sei
dhej
nuk janëchar[]
, ato janë përsëritës mbi grup. 18.11.2019