prvy
This commit is contained in:
parent
a81798517a
commit
6a26a4026d
BIN
sk1a/main.o
BIN
sk1a/main.o
Binary file not shown.
40
sk1a/maze.c
40
sk1a/maze.c
@ -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;
|
|
||||||
}
|
}
|
||||||
|
BIN
sk1a/maze.o
BIN
sk1a/maze.o
Binary file not shown.
BIN
sk1a/program
BIN
sk1a/program
Binary file not shown.
41
sk1a/readme.md
Normal file
41
sk1a/readme.md
Normal 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);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user