Advertisement
Guest User

Untitled

a guest
Oct 24th, 2016
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.37 KB | None | 0 0
  1. /* file: maze.c*/
  2. /* author: Boris Marinov (email: boris.marinov96@gmail.com) */
  3. /* date: 14/09/16 */
  4. /* version: ..... */
  5. /* Description: Program finds shortest path */
  6.  
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. #include <math.h>
  10. #include <assert.h>
  11.  
  12.  
  13. void printMaze( char arr[20][20], int x) {
  14.     int i;
  15.     for( i = 0; i < x; i++) {
  16.         printf("%s\n", arr[i]);
  17.     }
  18. }
  19. void solveMaze(char arr[20][20], int height, int width, int i, int j) {
  20.     if(arr[i][j] == 'E') {
  21.         arr[i][j] = '#';
  22.         printMaze(arr, height);
  23.     }
  24.    
  25.     if(i > width || j > height || arr[i][j]!= '.') {
  26.         return;
  27.     }
  28.    
  29.     arr[i][j] = '#';
  30.     solveMaze(arr, height, width, i+1, j);
  31.     solveMaze(arr, height, width, i-1, j);
  32.     solveMaze(arr, height, width, i, j+1);
  33.     solveMaze(arr, height, width, i, j-1);
  34.     arr[i][j] = '.';
  35. }
  36.  
  37. void findKeyPoints( char arr[20][20], int height, int width) {
  38.     int i, j, startI, startJ, endI, endJ;
  39.     for(i = 0; i < height; i++) {
  40.         for( j = 0; j < width; j++) {
  41.             if(arr[i][j] == 'S') {
  42.                 arr[i][j] = '.';
  43.                 startI = i;
  44.                 startJ = j;
  45.             }
  46.         }
  47.     }
  48.     solveMaze(arr, height, width, startI, startJ);
  49. }
  50.  
  51.  
  52. int main(int argc, char const *argv[])
  53. {
  54.     int width, height, i, j, start, end;
  55.     scanf("%d %d", &height, &width);
  56.    
  57.     char maze[20][20];
  58.     assert(maze);
  59.    
  60.     for(i = 0; i < height; i++) {
  61.         scanf("%s", maze[i]);
  62.     }
  63.    
  64.     findKeyPoints(maze, height, width);
  65.    
  66.     return 0;
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement