Advertisement
Leonard_M

labirint exemplu

Jan 29th, 2018
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.06 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3.  
  4. using namespace std;
  5. int n,m,is, js, ib, jb, v[101][101];
  6. int l[]={1, 0, -1, 0};
  7. int c[]={0, 1, 0, -1};
  8. int sl=0;
  9. ifstream fin("soarece.in");
  10. ofstream fout("soarece.out");
  11. void read()
  12. {
  13.     fin>>n>>m;
  14.     for(int i=1;i<=n;i++)
  15.         for(int j=1;j<=m;j++)
  16.            {
  17.                 fin>>v[i][j];
  18.                 if(v[i][j]==1) v[i][j]=-1;
  19.            }
  20.  
  21.    fin>>is>>js>>ib>>jb;
  22. }
  23.  
  24. bool verif(int ll, int cc)
  25. {
  26.  
  27.     return (v[ll][cc]==0 && ll>0 && ll<=n && cc<=m && cc>0);
  28. }
  29.  
  30. bool sol(int i, int j)
  31. {
  32.     return (i==ib  && j==jb);
  33. }
  34.  
  35. void backtracking(int i, int j, int pas)
  36. {
  37.     if(sol(i, j))
  38.         sl++;
  39.     else
  40.         for(int k=0;k<=3;k++)
  41.         {
  42.             int in=i+l[k];
  43.             int jn=j+c[k];
  44.             if(verif(in, jn))
  45.             {
  46.                 v[in][jn]=pas;
  47.                 backtracking(in, jn, pas+1);
  48.                 v[in][jn]=0;
  49.             }
  50.         }
  51. }
  52. int main()
  53. {
  54.  
  55.    read();
  56.    v[is][js]=1;
  57.    backtracking(is, js, 2);
  58.    fout<<sl;
  59.     return 0;
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement