zmena strategie -> backtraking
This commit is contained in:
parent
05d668c669
commit
67fd7de2aa
72
sk1a/maze.c
72
sk1a/maze.c
@ -4,63 +4,45 @@
|
|||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
|
int paths(char* maze, int journey, int size){
|
||||||
|
|
||||||
|
if(journey == size*size-1){
|
||||||
|
maze[journey]= '*';
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
int solve_maze(char* maze,int size){
|
if(journey >= 0 && journey < (size*size) && maze[journey]==' '){
|
||||||
|
maze[journey] = '*';
|
||||||
//int end = size*size;
|
|
||||||
int actualPos = 0;
|
|
||||||
maze[actualPos]='*';
|
|
||||||
|
|
||||||
while(actualPos != size*size-1){
|
|
||||||
//printf("acpos: %d\n", actualPos);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//Pohyb dole
|
//Pohyb dole
|
||||||
if(actualPos < (size*size-size) && maze[actualPos+size]==' '){
|
if(paths(maze, journey+size, size)){
|
||||||
//printf("dole\n");
|
return 1;
|
||||||
maze[actualPos+size]='*';
|
|
||||||
actualPos+=size;
|
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//Pohyb hore
|
|
||||||
if(actualPos-size > size && maze[actualPos-size]==' '){
|
|
||||||
//printf("hore\n");
|
|
||||||
maze[actualPos-size]='*';
|
|
||||||
actualPos-=size;
|
|
||||||
continue;
|
|
||||||
}else if(actualPos-size > size && maze[actualPos-size]=='*'){
|
|
||||||
maze[actualPos]=' ';
|
|
||||||
actualPos-=size;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Pohyb vpravo
|
//Pohyb vpravo
|
||||||
if(maze[actualPos+1]==' '){
|
if(paths(maze, journey+1, size)){
|
||||||
//puts("vpravo");
|
return 1;
|
||||||
maze[actualPos+1]='*';
|
|
||||||
actualPos++;
|
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//Pohyb hore
|
||||||
|
if(paths(maze, journey-size, size)){
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
//Pohyb vlavo
|
//Pohyb vlavo
|
||||||
if(maze[actualPos-1]==' '){
|
/* if(paths(maze, journey-1, size))
|
||||||
//printf("vlavo\n");
|
|
||||||
maze[actualPos]='*';
|
|
||||||
actualPos--;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
*/
|
||||||
|
|
||||||
|
maze[journey] = ' ';
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int solve_maze(char* maze, int size){
|
||||||
|
return paths(maze, 0, size);
|
||||||
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user