Advertisement
Guest User

Untitled

a guest
May 20th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.66 KB | None | 0 0
  1. #include    <iostream>
  2. #include    <fstream>
  3. using namespace std;
  4. ifstream fin("labirint.in");
  5. const int N_MAX = 2005;
  6. const int M_MAX = 2005;
  7. int N, M;
  8. unsigned int poz_init_X, poz_init_Y;
  9. unsigned int poz_finala_X, poz_finala_Y;
  10. unsigned int matrice[N_MAX][M_MAX];
  11. const int directii = 4;
  12. const int di[directii] = {0, 0, 1,  -1};
  13. const int dj[directii] = {1,  -1, 0, };
  14. void Citire()
  15. {
  16.     fin >> N >> M;
  17.     fin >> poz_init_X >> poz_init_Y;
  18.     fin >> poz_finala_X >> poz_finala_Y;
  19.     for(int i = 0; i < N; i++)
  20.         for(int j = 0; j < M; j++)
  21.             fin >> matrice[i][j];
  22. }
  23. bool isOK(int i, int j)
  24. {
  25.     if(i > N || i < 1)
  26.         return false;
  27.     if(j > M || j < 1)
  28.         return false;
  29.     if(matrice[i][j] == 1 || (i == poz_finala_X && j == poz_finala_Y))
  30.         return true;
  31.     if(matrice[i][j] == 0 || matrice[i][j])
  32.         return false;
  33.     return true;
  34. }
  35. void afisare()
  36. {
  37.     for(int i = 0; i < N; i++)
  38.     {
  39.         for(int j = 0; j < M; j++)
  40.             cout << matrice[i][j] << " ";
  41.         cout << "\n";
  42.     }
  43.     cout << "\n\n";
  44. }
  45. void Rezolvare(int i, int j, int pas)
  46. {
  47.     if(i == poz_finala_X && j == poz_finala_Y)
  48.         afisare();
  49.     else
  50.     {
  51.         for(int k = 0; k < directii; k++)
  52.         {
  53.             int i_vecin = i + di[k];
  54.             int j_vecin = j + dj[k];
  55.             if(isOK(i_vecin, j_vecin))
  56.             {
  57.                 matrice[i_vecin][j_vecin] = pas;
  58.                 Rezolvare(i_vecin, j_vecin, pas + 1);
  59.                 matrice[i_vecin][j_vecin] = 0;
  60.             }
  61.         }
  62.     }
  63. }
  64. int main()
  65. {
  66.     Citire();
  67.     Rezolvare(poz_init_X, poz_init_Y, 2);
  68.     return 0;
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement