#include <stdio.h>
void printMaze(char maze[][100],
int rows,
int columns)
{
for (int row = 0; row < rows; ++row)
{
for (int column = 0; column < columns; ++column)
{
printf("%c ", maze
[row
][column
]); }
}
}
int mazeTraverse(char maze[][100],
int rows,
int columns,
int row,
int column)
{
if (row < 0 || row >= rows ||
column < 0 || column >= columns)
{
return 1;
}
if (maze[row][column] != '.')
{
return 0;
}
maze[row][column] = 'X';
if (mazeTraverse(maze,
rows,
columns,
row,
column + 1))
{
return 1;
}
if (mazeTraverse(maze,
rows,
columns,
row + 1,
column))
{
return 1;
}
if (mazeTraverse(maze,
rows,
columns,
row,
column - 1))
{
return 1;
}
if (mazeTraverse(maze,
rows,
columns,
row - 1,
column))
{
return 1;
}
maze[row][column] = '.';
return 0;
}
int main(void)
{
int rows;
int columns;
printf("Enter number of rows: ");
printf("Enter number of columns: ");
char maze[100][100];
for (int row = 0; row < rows; ++row)
{
for (int column = 0; column < columns; ++column)
{
scanf(" %c", &maze
[row
][column
]); }
}
printf("\nMaze before traversal:\n\n"); printMaze(maze, rows, columns);
if (mazeTraverse(maze,
rows,
columns,
1,
1))
{
printf("The maze was solved.\n"); }
else
{
printf("No path was found.\n"); }
printf("\nMaze after traversal:\n\n"); printMaze(maze, rows, columns);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp2b2lkIHByaW50TWF6ZShjaGFyIG1hemVbXVsxMDBdLAogICAgICAgICAgICAgICBpbnQgcm93cywKICAgICAgICAgICAgICAgaW50IGNvbHVtbnMpCnsKICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IHJvd3M7ICsrcm93KQogICAgewogICAgICAgIGZvciAoaW50IGNvbHVtbiA9IDA7IGNvbHVtbiA8IGNvbHVtbnM7ICsrY29sdW1uKQogICAgICAgIHsKICAgICAgICAgICAgcHJpbnRmKCIlYyAiLCBtYXplW3Jvd11bY29sdW1uXSk7CiAgICAgICAgfQoKICAgICAgICBwdXRzKCIiKTsKICAgIH0KCiAgICBwdXRzKCIiKTsKfQoKaW50IG1hemVUcmF2ZXJzZShjaGFyIG1hemVbXVsxMDBdLAogICAgICAgICAgICAgICAgIGludCByb3dzLAogICAgICAgICAgICAgICAgIGludCBjb2x1bW5zLAogICAgICAgICAgICAgICAgIGludCByb3csCiAgICAgICAgICAgICAgICAgaW50IGNvbHVtbikKewogICAgaWYgKHJvdyA8IDAgfHwgcm93ID49IHJvd3MgfHwKICAgICAgICBjb2x1bW4gPCAwIHx8IGNvbHVtbiA+PSBjb2x1bW5zKQogICAgewogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgIGlmIChtYXplW3Jvd11bY29sdW1uXSAhPSAnLicpCiAgICB7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgbWF6ZVtyb3ddW2NvbHVtbl0gPSAnWCc7CgogICAgaWYgKG1hemVUcmF2ZXJzZShtYXplLAogICAgICAgICAgICAgICAgICAgICByb3dzLAogICAgICAgICAgICAgICAgICAgICBjb2x1bW5zLAogICAgICAgICAgICAgICAgICAgICByb3csCiAgICAgICAgICAgICAgICAgICAgIGNvbHVtbiArIDEpKQogICAgewogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgIGlmIChtYXplVHJhdmVyc2UobWF6ZSwKICAgICAgICAgICAgICAgICAgICAgcm93cywKICAgICAgICAgICAgICAgICAgICAgY29sdW1ucywKICAgICAgICAgICAgICAgICAgICAgcm93ICsgMSwKICAgICAgICAgICAgICAgICAgICAgY29sdW1uKSkKICAgIHsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICBpZiAobWF6ZVRyYXZlcnNlKG1hemUsCiAgICAgICAgICAgICAgICAgICAgIHJvd3MsCiAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnMsCiAgICAgICAgICAgICAgICAgICAgIHJvdywKICAgICAgICAgICAgICAgICAgICAgY29sdW1uIC0gMSkpCiAgICB7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgaWYgKG1hemVUcmF2ZXJzZShtYXplLAogICAgICAgICAgICAgICAgICAgICByb3dzLAogICAgICAgICAgICAgICAgICAgICBjb2x1bW5zLAogICAgICAgICAgICAgICAgICAgICByb3cgLSAxLAogICAgICAgICAgICAgICAgICAgICBjb2x1bW4pKQogICAgewogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgIG1hemVbcm93XVtjb2x1bW5dID0gJy4nOwoKICAgIHJldHVybiAwOwp9CgppbnQgbWFpbih2b2lkKQp7CiAgICBpbnQgcm93czsKICAgIGludCBjb2x1bW5zOwoKICAgIHByaW50ZigiRW50ZXIgbnVtYmVyIG9mIHJvd3M6ICIpOwogICAgc2NhbmYoIiVkIiwgJnJvd3MpOwoKICAgIHByaW50ZigiRW50ZXIgbnVtYmVyIG9mIGNvbHVtbnM6ICIpOwogICAgc2NhbmYoIiVkIiwgJmNvbHVtbnMpOwoKICAgIGNoYXIgbWF6ZVsxMDBdWzEwMF07CgogICAgcHJpbnRmKCJFbnRlciB0aGUgbWF6ZTpcbiIpOwoKICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IHJvd3M7ICsrcm93KQogICAgewogICAgICAgIGZvciAoaW50IGNvbHVtbiA9IDA7IGNvbHVtbiA8IGNvbHVtbnM7ICsrY29sdW1uKQogICAgICAgIHsKICAgICAgICAgICAgc2NhbmYoIiAlYyIsICZtYXplW3Jvd11bY29sdW1uXSk7CiAgICAgICAgfQogICAgfQoKICAgIHByaW50ZigiXG5NYXplIGJlZm9yZSB0cmF2ZXJzYWw6XG5cbiIpOwogICAgcHJpbnRNYXplKG1hemUsIHJvd3MsIGNvbHVtbnMpOwoKICAgIGlmIChtYXplVHJhdmVyc2UobWF6ZSwKICAgICAgICAgICAgICAgICAgICAgcm93cywKICAgICAgICAgICAgICAgICAgICAgY29sdW1ucywKICAgICAgICAgICAgICAgICAgICAgMSwKICAgICAgICAgICAgICAgICAgICAgMSkpCiAgICB7CiAgICAgICAgcHJpbnRmKCJUaGUgbWF6ZSB3YXMgc29sdmVkLlxuIik7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgcHJpbnRmKCJObyBwYXRoIHdhcyBmb3VuZC5cbiIpOwogICAgfQoKICAgIHByaW50ZigiXG5NYXplIGFmdGVyIHRyYXZlcnNhbDpcblxuIik7CiAgICBwcmludE1hemUobWF6ZSwgcm93cywgY29sdW1ucyk7CgogICAgcmV0dXJuIDA7Cn0=