Update 'sk1a/README.md'
This commit is contained in:
parent
3d00dc9176
commit
21297fa56f
108
sk1a/README.md
108
sk1a/README.md
@ -1,55 +1,55 @@
|
|||||||
//Potkan sa vie pohybovať po štvorcoch hore,dole, doprava i doľava. Bludisko je tvorené štvorcovou mriežkou rozmeru N x N. V bludisku sa nachádzajú prekážky vyznačené 'x'. Potkan pri pohybe nesmie naraziť do žiadnej prekážky.
|
//Potkan sa vie pohybovať po štvorcoch hore,dole, doprava i doľava. Bludisko je tvorené štvorcovou mriežkou rozmeru N x N. V bludisku sa nachádzajú prekážky vyznačené 'x'. Potkan pri pohybe nesmie naraziť do žiadnej prekážky.
|
||||||
//
|
//
|
||||||
//Počiatočná pozícia potkana je v ľavom hornom rohu mriežky vyznačená '*'.
|
//Počiatočná pozícia potkana je v ľavom hornom rohu mriežky vyznačená '*'.
|
||||||
//
|
//
|
||||||
//Vašou úlohou bude zobraziť optimálnu cestu pre potkana v bludisku. Cestu potkana vyznačte '*'.
|
//Vašou úlohou bude zobraziť optimálnu cestu pre potkana v bludisku. Cestu potkana vyznačte '*'.
|
||||||
//
|
//
|
||||||
//Implementujte funkciu:
|
//Implementujte funkciu:
|
||||||
//
|
//
|
||||||
//int solve_maze(char* maze,int size);
|
//int solve_maze(char* maze,int size);
|
||||||
//maze je jednorozmerné pole do ktorého je uložená mriežka po riadkoch za sebou. Na začiatku poľa sa nachádza prvý riadok mriežky, za ním nasleduje druhý a tak ďalej. Spolu sa v poli maze nachádza size * size znakov.
|
//maze je jednorozmerné pole do ktorého je uložená mriežka po riadkoch za sebou. Na začiatku poľa sa nachádza prvý riadok mriežky, za ním nasleduje druhý a tak ďalej. Spolu sa v poli maze nachádza size * size znakov.
|
||||||
//
|
//
|
||||||
//Vašou úlohou bude modifikovať pole maze tak, aby ste v ňom vyznačili cestu z bludiska čo sa nachádza v pravom dolnom rohu bludiska.
|
//Vašou úlohou bude modifikovať pole maze tak, aby ste v ňom vyznačili cestu z bludiska čo sa nachádza v pravom dolnom rohu bludiska.
|
||||||
//hladam najlepsiu cenu na koniec, pravy dolny roh
|
//hladam najlepsiu cenu na koniec, pravy dolny roh
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include "maze.h"
|
#include "maze.h"
|
||||||
#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;
|
||||||
}
|
}
|
||||||
|
|
||||||
int backtracking(char* maze, int x, int y, int size){ //https://www.geeksforgeeks.org/rat-in-a-maze-backtracking-2/
|
int backtracking(char* maze, int x, int y, int size){ //https://www.geeksforgeeks.org/rat-in-a-maze-backtracking-2/
|
||||||
if(x == size - 1 && y == size - 1 && maze[x * size + y] == ' '){ //kontrola ci sa nachadzam na konci
|
if(x == size - 1 && y == size - 1 && maze[x * size + y] == ' '){ //kontrola ci sa nachadzam na konci
|
||||||
maze[x * size + y] = '*';
|
maze[x * size + y] = '*';
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(issafe(maze, x, y, size) == 1) { // znazornenie stien
|
if(issafe(maze, x, y, size) == 1) { // znazornenie stien a pohyb zanechavania *
|
||||||
maze[x * size + y] = '*';
|
maze[x * size + y] = '*';
|
||||||
|
|
||||||
if (backtracking(maze, x, y + 1, size) == 1) { //pohyb doprava
|
if (backtracking(maze, x, y + 1, size) == 1) { //pohyb doprava
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if (backtracking(maze, x + 1, y, size) == 1) { //pohyb dole
|
if (backtracking(maze, x + 1, y, size) == 1) { //pohyb dole
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if (backtracking(maze, x - 1, y, size) == 1) { //pohyb dol
|
if (backtracking(maze, x - 1, y, size) == 1) { //pohyb dol
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if (backtracking(maze, x, y - 1, size) == 1) { //pohyb hore
|
if (backtracking(maze, x, y - 1, size) == 1) { //pohyb hore
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
maze[x * size + y] = ' ';
|
maze[x * size + y] = ' ';
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int solve_maze(char* maze, int size) {
|
int solve_maze(char* maze, int size) {
|
||||||
return backtracking(maze, 0, 0, size); //volanie funkcie
|
return backtracking(maze, 0, 0, size); //volanie funkcie
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user