From 7777b5824889b3beee050a8cbc38110ec34c5914 Mon Sep 17 00:00:00 2001 From: Nandhika Jhansi <91628798+Nandhika2003@users.noreply.github.com> Date: Sun, 1 Oct 2023 02:31:54 +0530 Subject: [PATCH] Create ratInMaze.cpp --- algorithms/backtracking/ratInMaze.cpp | 70 +++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 algorithms/backtracking/ratInMaze.cpp diff --git a/algorithms/backtracking/ratInMaze.cpp b/algorithms/backtracking/ratInMaze.cpp new file mode 100644 index 00000000..0c95ba1e --- /dev/null +++ b/algorithms/backtracking/ratInMaze.cpp @@ -0,0 +1,70 @@ +#include +using namespace std; + +#define N 4 + +bool solveMazeUtil(int maze[N][N], int x, int y,int sol[N][N]); + +void printSolution(int sol[N][N]) +{ + for (int i = 0; i < N; i++) { + for (int j = 0; j < N; j++) + cout<<" "<= 0 && x < N && y >= 0 && y < N && maze[x][y] == 1) + return true; + return false; +} + +bool solveMaze(int maze[N][N]) +{ + int sol[N][N] = { { 0, 0, 0, 0 }, + { 0, 0, 0, 0 }, + { 0, 0, 0, 0 }, + { 0, 0, 0, 0 } }; + if (solveMazeUtil(maze, 0, 0, sol) == false) { + cout<<"Solution doesn't exist"; + return false; + } + printSolution(sol); + return true; +} + +bool solveMazeUtil(int maze[N][N], int x, int y, int sol[N][N]) +{ + if (x == N - 1 && y == N - 1 && maze[x][y] == 1) { + sol[x][y] = 1; + return true; + } + if (isSafe(maze, x, y) == true) { + if (sol[x][y] == 1) + return false; + sol[x][y] = 1; + if (solveMazeUtil(maze, x + 1, y, sol) == true) + return true; + if (solveMazeUtil(maze, x - 1, y, sol) == true) + return true; + if (solveMazeUtil(maze, x, y + 1, sol) == true) + return true; + if (solveMazeUtil(maze, x, y - 1, sol) == true) + return true; + sol[x][y] = 0; + return false; + } + return false; +} + +int main() +{ + int maze[N][N] = { { 1, 0, 0, 0 }, + { 1, 1, 0, 1 }, + { 0, 1, 0, 0 }, + { 1, 1, 1, 1 } }; + solveMaze(maze); + return 0; +}