有一个n*n的迷宫(2<=n<=10),入口在左上角,出口在右上角,0表示可通,1表示障碍。从某点开始有八个方向可以走,输出从入口到出口的路径总数。
1 #include<bits/stdc++.h> 2 using namespace std; 3 int s[11][11]; 4 int wx[10]={-1,-1,-1,0,0,1,1,1},wy[10]={-1,0,1,-1,1,-1,0,1}; 5 bool b[11][11]; 6 int n,tot=0; 7 void search(int x,int y) 8 { 9 int i,j; 10 if(x==0 && y==n-1) 11 { 12 tot++; 13 return ; 14 } 15 else 16 { 17 for(i=0;i<8;i++) 18 { 19 if(x+wx[i]>=0 && x+wx[i]<n && y+wy[i]>=0 && y+wy[i]<n) 20 { 21 if(s[x+wx[i]][y+wy[i]]==0 && b[x+wx[i]][y+wy[i]]==0) 22 { 23 b[x+wx[i]][y+wy[i]]=1; 24 search(x+wx[i],y+wy[i]); 25 b[x+wx[i]][y+wy[i]]=0; 26 } 27 } 28 } 29 } 30 } 31 int main() 32 { 33 cin>>n; 34 for(int i=0;i<n;i++) 35 for(int j=0;j<n;j++) 36 cin>>s[i][j]; 37 for(int i=0;i<11;i++) 38 for(int j=0;j<11;j++) 39 b[i][j]=0; 40 b[0][0]=1; 41 search(0,0); 42 cout<<tot; 43 return 0; 44 }