Advertisement
Guest User

Sobolan

a guest
Feb 8th, 2016
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.27 KB | None | 0 0
  1. #include <fstream>
  2. using namespace std;
  3. ifstream fin("maze.in");
  4. ofstream fout("maze.out");
  5. #define NMax 20
  6. int a[20][20], n, m, xs, ys, xb, yb, nrsol=0, poz=0;
  7. int dx[8]={0 , 1, 1, 1, 0,-1,-1,-1};
  8. int dy[8]={-1,-1, 0, 1, 1, 1, 0,-1};
  9. void citire();
  10. void bordare();
  11. void cautare(int x, int y, int poz);
  12. void afisare();
  13. int main()
  14. {
  15.     citire();
  16.     bordare();
  17.     cautare(xs,ys,poz);
  18.     return 0;
  19. }
  20. void citire()
  21. {
  22.     fin>>n>>m>>xs>>ys>>xb>>yb;
  23.     for(int i=1; i<=n; i++)
  24.         for(int j=1; j<=m; j++)
  25.             fin>>a[i][j];
  26. }
  27. void bordare()
  28. {
  29.     for(int i=0; i<=n+1; i++)
  30.         a[0][i]=a[n+1][i]=1;
  31.     for(int j=0; j<=m+1; j++)
  32.         a[j][0]=a[j][m+1]=1;
  33. }
  34. void cautare(int x, int y, int poz)
  35. {
  36.     a[x][y]=2+poz;
  37.     if(x==xb && y==yb)
  38.         afisare();
  39.     else
  40.         for(int i=0; i<8; i++)
  41.             if(!a[x+dx[i]][y+dy[i]])
  42.                 cautare(x+dx[i],y+dy[i], poz+1);
  43.     a[x][y]=0;
  44. }
  45. void afisare()
  46. {
  47.     fout<<"Solutia "<<++nrsol<<':'<<'\n';
  48.     for(int i=1; i<=n; i++)
  49.     {
  50.         for(int j=1; j<=m; j++)
  51.             if(a[i][j]>=2)
  52.                 fout<<a[i][j]-1<<' ';
  53.             else if(a[i][j]==0)
  54.                 fout<<0<<' ';
  55.             else
  56.                 fout<<'#'<<' ';
  57.         fout<<'\n';
  58.     }
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement