From 21297fa56fa21a077d7bd4e58ba8e0f09fce1d91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dami=C3=A1n=20Korpesio?= Date: Thu, 20 Jan 2022 08:48:54 +0000 Subject: [PATCH] Update 'sk1a/README.md' --- sk1a/README.md | 108 ++++++++++++++++++++++++------------------------- 1 file changed, 54 insertions(+), 54 deletions(-) diff --git a/sk1a/README.md b/sk1a/README.md index 3b0bec0..3d91d77 100644 --- a/sk1a/README.md +++ b/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. -// -//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 '*'. -// -//Implementujte funkciu: -// -//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. -// -//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 -#include -#include -#include "maze.h" -#include - -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){ //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 -maze[x * size + y] = '*'; -return 1; -} - - if(issafe(maze, x, y, size) == 1) { // znazornenie stien - maze[x * size + y] = '*'; - - if (backtracking(maze, x, y + 1, size) == 1) { //pohyb doprava - return 1; - } - if (backtracking(maze, x + 1, y, size) == 1) { //pohyb dole - return 1; - } - if (backtracking(maze, x - 1, y, size) == 1) { //pohyb dol - - return 1; - } - if (backtracking(maze, x, y - 1, size) == 1) { //pohyb hore - return 1; - } - maze[x * size + y] = ' '; - } - return 0; -} - -int solve_maze(char* maze, int size) { -return backtracking(maze, 0, 0, size); //volanie funkcie +//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á '*'. +// +//Vašou úlohou bude zobraziť optimálnu cestu pre potkana v bludisku. Cestu potkana vyznačte '*'. +// +//Implementujte funkciu: +// +//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. +// +//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 +#include +#include +#include "maze.h" +#include + +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){ //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 +maze[x * size + y] = '*'; +return 1; +} + + if(issafe(maze, x, y, size) == 1) { // znazornenie stien a pohyb zanechavania * + maze[x * size + y] = '*'; + + if (backtracking(maze, x, y + 1, size) == 1) { //pohyb doprava + return 1; + } + if (backtracking(maze, x + 1, y, size) == 1) { //pohyb dole + return 1; + } + if (backtracking(maze, x - 1, y, size) == 1) { //pohyb dol + + return 1; + } + if (backtracking(maze, x, y - 1, size) == 1) { //pohyb hore + return 1; + } + maze[x * size + y] = ' '; + } + return 0; +} + +int solve_maze(char* maze, int size) { +return backtracking(maze, 0, 0, size); //volanie funkcie } \ No newline at end of file