This commit is contained in:
Damián Korpesio 2022-01-19 23:23:25 +01:00
parent a81798517a
commit 6a26a4026d
5 changed files with 43 additions and 38 deletions

Binary file not shown.

View File

@ -4,7 +4,7 @@
#include <assert.h> #include <assert.h>
int issafe(char* maze, int x, int y, int size) { int issafe(char* maze, int x, int y, int size) {
if ((x >= 0 && x < size) && (y >= 0 && y < size) && maze[x * size + y] == ' '){ if ((x >= 0 && x < size) && (y >= 0 && y < size) && (maze[x * size + y] == ' ')){
return 1; return 1;
} }
return 0; return 0;
@ -37,41 +37,5 @@ int backtracking(char* maze, int x, int y, int size){
} }
int solve_maze(char* maze, int size) { int solve_maze(char* maze, int size) {
if (maze[0] == '*'){ return backtracking(maze, 0, 0, size);
assert(maze[0] == '*');
maze[0] = ' ';
}
int x,y = 0;
while(x * size + y <= size*size - 1 ){
printf("%d\n%d", x * size + y, y);
//issafe(maze, x, y, size);
if (maze[x * size + y + 1] == ' ' /*&& y != 5*/){
assert(maze[x * size + y + 1] == ' ');
maze[x * size + y + 1] = '*';
y++;
}
if (maze[(x + 1) * size + y] == ' ' /*&& x != 5*/){
assert(maze[(x + 1) * size + y] == ' ');
maze[(x + 1) * size + y] = '*';
x++;
}
if (maze[x * size + y - 1] == ' ' && y != 0){
assert(maze[x * size + y - 1] == ' ');
maze[x * size + y - 1] = '*';
y--;
}
if (maze[(x - 1) * size + y] == ' ' /*&& x != 0*/){
assert(maze[(x - 1) * size + y] == ' ');
maze[(x - 1) * size + y] = '*';
x--;
}
else{
backtracking(maze,x , y, size);
}
}
return 1;
} }

Binary file not shown.

Binary file not shown.

41
sk1a/readme.md Normal file
View File

@ -0,0 +1,41 @@
#include <stdio.h>
#include <string.h>
#include "maze.h"
#include <assert.h>
int issafe(char* maze, int x, int y, int size) {
if ((x >= 0 && x < size) && (y >= 0 && y < size) && (maze[x * size + y] == ' ')){
return 1;
}
return 0;
}
int backtracking(char* maze, int x, int y, int size){
if(x == size - 1 && y == size - 1 && maze[x * size + y] == ' '){
maze[x * size + y] = '*';
return 1;
}
if(issafe(maze, x, y, size) == 1) {
maze[x * size + y] = '*';
if (backtracking(maze, x, y + 1, size) == 1) {
return 1;
}
if (backtracking(maze, x + 1, y, size) == 1) {
return 1;
}
if (backtracking(maze, x - 1, y, size) == 1) {
return 1;
}
if (backtracking(maze, x, y - 1, size) == 1) {
return 1;
}
maze[x * size + y] = ' ';
}
return 0;
}
int solve_maze(char* maze, int size) {
return backtracking(maze, 0, 0, size);
}