usaa21/sk1a/maze.c

42 lines
1000 B
C
Raw Permalink Normal View History

2021-12-28 15:21:01 +00:00
#include <stdio.h>
#include <string.h>
#include "maze.h"
#include <assert.h>
2022-01-19 21:29:10 +00:00
int issafe(char* maze, int x, int y, int size) {
2022-01-19 22:23:25 +00:00
if ((x >= 0 && x < size) && (y >= 0 && y < size) && (maze[x * size + y] == ' ')){
2022-01-19 21:29:10 +00:00
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;
2022-01-03 14:54:09 +00:00
}
2022-01-19 21:29:10 +00:00
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) {
2022-01-19 22:23:25 +00:00
return backtracking(maze, 0, 0, size);
2021-12-28 15:21:01 +00:00
}