0
已解决
#include <iostream>
#include <cstdio>
using namespace std;
int n;
int mp[505][505];
int ans=0;
bool vis[505][505];
int dir[9][2]={{0},{0,-1},{-1,0},{0,1},{1,0},{1,-1},{-1,1},{1,1},{-1,-1}};
void dfs(int x, int y)
{
if(x==n&&y==n)
{
ans++;
return;
}
for(int i=1; i<=8; i++)
{
int nx=x+dir[i][0], ny=y+dir[i][1];
if((nx>=1&&nx<=n)&&(ny>=1&&ny<=n)&&(mp[nx][ny]==0)&&(vis[nx][ny]==false))
{
vis[nx][ny]=true;
dfs(nx, ny);
vis[nx][ny]=false;
}
}
}
int main()
{
cin >> n;
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
{
cin >> mp[i][j];
}
}
vis[0][0] = true;
dfs(0, 0);
cout << ans;
return 0;
}
为啥0分
