Five_NT

[C++]Traseu hot

Oct 21st, 2013
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.19 KB | None | 0 0
  1. //Intr-o cladire este plasat un hot. Sa se afiseze toate posibilatite de iesire. El se poate deplasa in toate cele 8 directii.
  2.  
  3. #include<iostream>
  4. #include<fstream>
  5.  
  6. using namespace std;
  7.  
  8.  
  9. ifstream f("cladire.in");
  10.  
  11. const int x[]={1, 1, 0,-1,-1,-1,0,1};
  12. const int y[]={0,-1,-1,-1, 0, 1,1,1};
  13. int a[10][10], b[10][10], i, j, n, sol, js, jp, is, ip;
  14.  
  15. void citire()
  16. {
  17.     f>>n;
  18.     for(i=1; i<=n; i++)
  19.         for(j=1; j<=n; j++)
  20.             f>>a[i][j];
  21. }
  22.  
  23. void afis()
  24. {
  25.     sol++;
  26.     cout<<"Solutia nr. "<<sol<<'\n';
  27.     cout<<'\n';
  28.     int i,j;
  29.     for(i=1; i<=n; i++)
  30.     {
  31.         for(j=1; j<=n; j++)
  32.             cout<<b[i][j]<<" ";
  33.         cout<<"\n";
  34.     }
  35.     cout<<"\n";
  36. }
  37.  
  38. void back(int i, int j, int pas)
  39. {
  40.     int ii, jj, k;
  41.     for(k=0; k<=7; k++)
  42.     {
  43.         ii=i+x[k];
  44.         jj=j+y[k];
  45.         if(ii>=1 && ii<=n && jj>=1 && jj<=n)
  46.             if(a[ii][jj]==1 && b[ii][jj]==0)
  47.             {
  48.                 b[ii][jj]=pas;
  49.                 if(ii==1 || ii==n && jj==1 || jj==n) afis();
  50.                 else back(ii,jj,pas+1);
  51.                 b[ii][jj]=0;
  52.             }
  53.     }
  54. }
  55.  
  56. int main()
  57. {
  58.     citire();
  59.     for(i=1; i<=n; i++)
  60.         for(j=1; j<=n; j++) b[i][j]=0;
  61.     cout<<"Pozitia hot: ";
  62.     cout<<"* Linie plecare: "; cin>>ip;
  63.     cout<<"* Coloana plecare: "; cin>>jp;
  64.     sol=0;
  65.     b[ip][jp]=1;
  66.     back(ip, jp, 2);
  67.     return 0;
  68. }
Advertisement
Add Comment
Please, Sign In to add comment