题目描述
设有一个 N*N(2<=N<10)方格的迷宫,入口和出口分别在左上角和右上角。迷宫格子中 分别放 0 和 1,0 表示可通,1 表示不能,入口和出口处肯定是 0。迷宫走的规则如下所示: 即从某点开始,有八个方向可走,前进方格中数字为 0 时表示可通过,为 1 时表示不可通过, 要另找路径。找出所有从入口(左上角)到出口(右上角)的路径(不能重复),输出路径总 数,如果无法到达,则输出 0。
输入格式
第一行:N 接下来是:N*N的迷宫
输出格式
输出路径总数,如果无法到达,则输出0。
样例
样例输入
复制3
0 0 0
0 1 1
1 0 0
样例输出
复制2
_____________________________________________________________________________
写作不易,点个赞呗!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
_____________________________________________________________________________
#include<bits/stdc++.h>
using namespace std;
int n,ans;
int a[10005][10005];
int f[9][9]={{0,1},{1,0},{-1,0},{0,-1},{1,1},{1,-1},{-1,-1},{-1,1}};
void DFS(int x,int y){if(x==1&&y==n){ans++;return ;}a[x][y]=true;for(int i=0;i<8;i++){int X=x+f[i][0],Y=y+f[i][1];if(a[X][Y]==false&&X>0&&Y>0&&X<=n&&Y<=n){DFS(X,Y);}}a[x][y]=false;
}
int main(){cin>>n;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){cin>>a[i][j];}}DFS(1,1);cout<<ans;
}