0
已解决
丁一
修练者
修练者
#include<iostream>
#include<cstring>
using namespace std;
int n,ans;
int map[11][11];
int sx[8]={-1,-1,-1,0,0,1,1,1},
sy[8]={-1,0,1,-1,1,-1,0,1};
bool vis[11][11];
bool valid(int x,int y){
if(x<=n&&y<=n&&x>=1&&y>=1)
return true;
return false;
}
void dfs(int x,int y){
if(x==1&&y==n){
ans++;
return ;
}
else
for(int i=1;i<=8;i++){
int dx=x+sx[i];
int dy=y+sy[i];
if(map[dx][dy]==0&&valid(dx,dy)&&!vis[dx][dy]){
vis[dx][dy]=1;
dfs(dx,dy);
vis[dx][dy]=0;
}
}
return ;
}
int main(){
cin>>n;
memset(map,0,sizeof(map));
memset(vis,0,sizeof(vis));
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
cin>>map[i][j];
vis[1][1]=1;
dfs(1,1);
cout<<ans<<endl;
return 0;
}