Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- using namespace std;
- ifstream fin("soarece.in");
- ofstream fout("soarece.out");
- int n,m,ib,jb,solutii=0;
- int v[401],a[21][21];
- struct coordonate
- {
- int x;
- int y;
- };
- coordonate drum[401];
- int dirl[11]={-1,0,1,0},dirc[11]={0,1,0,-1};
- int verif(int k)
- {
- drum[k].x=drum[k-1].x+dirl[v[k]];
- drum[k].y=drum[k-1].y+dirc[v[k]];
- if(a[drum[k].x][drum[k].y]==1)
- return 0;
- return 1;
- }
- void back(int k)
- {
- if(drum[k-1].x==ib && drum[k-1].y==jb)
- {
- solutii++;
- }
- else
- {
- for(int q=0;q<4;q++)
- {
- v[k]=q;
- if(verif(k))
- {
- a[drum[k].x][drum[k].y]=1;
- back(k+1);
- a[drum[k].x][drum[k].y]=0;
- }
- }
- }
- }
- int main()
- {
- fin>>n>>m;
- for(int i=1;i<=n;i++)
- for(int j=1;j<=m;j++)
- {
- fin>>a[i][j];
- }
- for(int i=0;i<=n+1;i++)
- for(int j=0;j<=m+1;j++)
- if(i==0 || i==n+1 || j==0 || j==m+1)
- a[i][j]=1;
- fin>>drum[0].x>>drum[0].y;
- a[drum[0].x][drum[0].y]=1;
- fin>>ib>>jb;
- back(1);
- fout<<solutii;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement