Advertisement
Hamoudi30

8-D check

Jul 29th, 2021
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.92 KB | None | 0 0
  1. // 8-D check
  2. const int N = 100;
  3. char a[N][N];
  4. bool vis[N][N];
  5. int n, m;
  6. bool valid (int row, int col) {
  7.     return (row >= 0 && col >= 0 && row < n && col < m);
  8. }
  9. bool can (int row, int col) {
  10.     // base case
  11.     if (!valid(row, col) || a[row][col] == 'X' || vis[row][col])
  12.         return false;
  13.  
  14.     if (a[row][col] == 'E')
  15.         return true;
  16.     // recursive case
  17.     vis[row][col] = true;
  18.     // 8 directions
  19.     if (can(row + 1, col))  // 1
  20.         return true;
  21.     if (can(row - 1, col)) // 2
  22.         return true;
  23.     if (can(row, col + 1)) // 3
  24.         return true;
  25.     if (can(row, col - 1)) // 4
  26.         return true;
  27.     if (can(row + 1, col + 1)) // 5
  28.         return true;
  29.     if (can(row - 1, col - 1)) // 6
  30.         return true;
  31.     if (can(row - 1, col + 1)) // 7
  32.         return true;
  33.     if (can(row + 1, col - 1)) // 8
  34.         return true;
  35.     // can't reach End
  36.     return false;
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement