迷宫

有一个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 }

 

上一篇:利用模n同余类乘群初探素数的分布规律


下一篇:【网络技术题库梳理11】第三道大题——DHCP报文