Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- using namespace std;
- ifstream fin("maze.in");
- ofstream fout("maze.out");
- #define NMax 20
- int a[20][20], n, m, xs, ys, xb, yb, nrsol=0, poz=0;
- int dx[8]={0 , 1, 1, 1, 0,-1,-1,-1};
- int dy[8]={-1,-1, 0, 1, 1, 1, 0,-1};
- void citire();
- void bordare();
- void cautare(int x, int y, int poz);
- void afisare();
- int main()
- {
- citire();
- bordare();
- cautare(xs,ys,poz);
- return 0;
- }
- void citire()
- {
- fin>>n>>m>>xs>>ys>>xb>>yb;
- for(int i=1; i<=n; i++)
- for(int j=1; j<=m; j++)
- fin>>a[i][j];
- }
- void bordare()
- {
- for(int i=0; i<=n+1; i++)
- a[0][i]=a[n+1][i]=1;
- for(int j=0; j<=m+1; j++)
- a[j][0]=a[j][m+1]=1;
- }
- void cautare(int x, int y, int poz)
- {
- a[x][y]=2+poz;
- if(x==xb && y==yb)
- afisare();
- else
- for(int i=0; i<8; i++)
- if(!a[x+dx[i]][y+dy[i]])
- cautare(x+dx[i],y+dy[i], poz+1);
- a[x][y]=0;
- }
- void afisare()
- {
- fout<<"Solutia "<<++nrsol<<':'<<'\n';
- for(int i=1; i<=n; i++)
- {
- for(int j=1; j<=m; j++)
- if(a[i][j]>=2)
- fout<<a[i][j]-1<<' ';
- else if(a[i][j]==0)
- fout<<0<<' ';
- else
- fout<<'#'<<' ';
- fout<<'\n';
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement