A mouse is at one corner of a maze and he has to reach the corner diagonally opposite to him. Write an algorithm to find the path through the maze. The maze is represented by a matrix of '0's and '1's where '1' denotes a path and '0' denotes a wall.
http://algorithms.tutorialhorizon.com/backtracking-rat-in-a-maze-puzzle/
http://www.geeksforgeeks.org/backttracking-set-2-rat-in-a-maze/
#include<stdio.h>
#include<stdlib.h>
#define N 4
void printMaze(int maze[N][N])
{
int i, j;
for(i=0; i < N; i++)
{
for(j=0; j < N; j++)
printf("%d ", maze[i][j]);
printf("\n");
}
}
void move(int maze[N][N], int sol[N][N], int x, int y)
{
if((x == N-1) && (y == N-1))
{
sol[x][y] = 1;
printMaze(sol);
return;
}
if(x != N-1)
{
if(maze[x+1][y])
{
sol[x][y] = 1;
move(maze, sol, x+1, y);
sol[x][y] = 0;
}
}
if(y != N-1)
{
if(maze[x][y+1])
{
sol[x][y] = 1;
move(maze, sol, x, y+1);
sol[x][y] = 0;
}
}
}
int main()
{
int maze[N][N] =
{
{1, 0, 0, 0},
{1, 1, 0, 1},
{0, 1, 0, 0},
{0, 1, 1, 1}
};
int sol[N][N] = {0,};
move(maze, sol, 0, 0);
return 0;
}
http://algorithms.tutorialhorizon.com/backtracking-rat-in-a-maze-puzzle/
http://www.geeksforgeeks.org/backttracking-set-2-rat-in-a-maze/
Code:BackTracking
#include<stdio.h>
#include<stdlib.h>
#define N 4
void printMaze(int maze[N][N])
{
int i, j;
for(i=0; i < N; i++)
{
for(j=0; j < N; j++)
printf("%d ", maze[i][j]);
printf("\n");
}
}
void move(int maze[N][N], int sol[N][N], int x, int y)
{
if((x == N-1) && (y == N-1))
{
sol[x][y] = 1;
printMaze(sol);
return;
}
if(x != N-1)
{
if(maze[x+1][y])
{
sol[x][y] = 1;
move(maze, sol, x+1, y);
sol[x][y] = 0;
}
}
if(y != N-1)
{
if(maze[x][y+1])
{
sol[x][y] = 1;
move(maze, sol, x, y+1);
sol[x][y] = 0;
}
}
}
int main()
{
int maze[N][N] =
{
{1, 0, 0, 0},
{1, 1, 0, 1},
{0, 1, 0, 0},
{0, 1, 1, 1}
};
int sol[N][N] = {0,};
move(maze, sol, 0, 0);
return 0;
}
No comments:
Post a Comment