fork download
  1. #include<iostream>
  2. using namespace std;
  3.  
  4. //static int count=0;
  5.  
  6. void f(int a[][8],int n,int m,int x,int y,int z,int fx,int fy, int &count){
  7. if(x==fx && y==fy && z==(n*m-1) && a[x][y]==1) {count++; return;}
  8. /*
  9.   if( (x-1)>=0 && a[x-1][y]!=0 ) { int zb=z; int b[8][8]=a; if(--b[x][y]==0) zb++ ; f(b,n,m,x-1,y,zb,fx,fy,count);};
  10.   if( (x-2)>=0 && a[x-2][y]!=0 ) { int zb=z; int b[8][8]=a; if(--b[x][y]==0)zb++ ; f(b,n,m,x-2,y,zb,fx,fy,count);};
  11.   if( (x+1)<n && a[x+1][y]!=0 ) { int zb=z; int b[8][8]=a; if(--b[x][y]==0) zb++ ; f(b,n,m,x+1,y,zb,fx,fy,count);};
  12.   if( (x+2)<n && a[x+2][y]!=0 ) { int zb=z; int b[8][8]=a; if(--b[x][y]==0) zb++ ; f(b,n,m,x+2,y,zb,fx,fy,count);};
  13.   if( (y-1)>=0 && a[x][y-1]!=0 ) { int zb=z; int b[8][8]=a; if(--b[x][y]==0) zb++ ; f(b,n,m,x,y-1,zb,fx,fy,count);};
  14.   if( (y-2)>=0 && a[x][y-2]!=0 ) { int zb=z; int b[8][8]=a; if(--b[x][y]==0) zb++ ; f(b,n,m,x,y-2,zb,fx,fy,count);};
  15.   if( (y+1)<m && a[x][y+1]!=0 ) { int zb=z; int b[8][8]=a; if(--b[x][y]==0) zb++ ; f(b,n,m,x,y+1,zb,fx,fy,count);};
  16.   if( (y+2)<m && a[x][y+2]!=0 ) { int zb=z; int b[8][8]=a; if(--b[x][y]==0) zb++ ; f(b,n,m,x,y+2,zb,fx,fy,count);};
  17.   */
  18. int b[n][8];
  19. for(int i=0;i<n;i++){
  20. for(int j=0;j<m;j++)
  21. b[i][j]=a[i][j];
  22. }
  23. b[x][y]--;
  24. if(b[x][y]==0) z++ ;
  25. if( (x-1)>=0){if( a[x-1][y]!=0 ) f(b,n,m,x-1,y,z,fx,fy,count);};
  26. if( (x-2)>=0) {if (a[x-2][y]!=0 ) f(b,n,m,x-2,y,z,fx,fy,count);};
  27. if( (x+1)<n ) { if( a[x+1][y]!=0 ) f(b,n,m,x+1,y,z,fx,fy,count);};
  28. if( (x+2)<n ) { if( a[x+2][y]!=0 ) f(b,n,m,x+2,y,z,fx,fy,count);};
  29. if( (y-1)>=0 ) {if( a[x][y-1]!=0 ) f(b,n,m,x,y-1,z,fx,fy,count);};
  30. if( (y-2)>=0 ) { if(a[x][y-2]!=0 ) f(b,n,m,x,y-2,z,fx,fy,count);};
  31. if( (y+1)<m) {if(a[x][y+1]!=0 ) f(b,n,m,x,y+1,z,fx,fy,count);};
  32. if( (y+2)<m) {if( a[x][y+2]!=0 ) f(b,n,m,x,y+2,z,fx,fy,count);};
  33. }
  34.  
  35. int main()
  36. {
  37. int n,m,sx,sy,fx,fy,z=0,count=0;
  38. cin>>n>>m>>sx>>sy>>fx>>fy;
  39. int a[n][8];
  40. for(int i=0;i<n;i++){
  41. for(int j=0;j<m;j++)
  42. {cin>>a[i][j]; if(a[i][j]==0) z=z+1;}
  43. }
  44. f(a,n,m,sx,sy,z,fx,fy,count);
  45. cout<<"aa";
  46. cout<<count;
  47.  
  48. return 0;
  49. }
  50.  
  51.  
Runtime error #stdin #stdout 0s 3340KB
stdin
Standard input is empty
stdout
Standard output is empty