- 迷宫 路径总数
- 2023-07-11 12:19:13 @
#include<bits/stdc++.h>
using namespace std;
int n,a[10][10],cnt=0;
int dir[8][2]={{1,0},{0,1},{-1,0},{0,-1},{1,-1},{-1,1},{-1,-1},{1,1}};
bool vis[10][10];
void dfs(int x,int y)
{
vis[x][y]=1;
if(x==1&&y==n)
{
cnt++;
return;
}
else
for(int i=0;i<n;i++)
{
int nx=x+dir[i][0],ny=y+dir[i][1];
if(!vis[nx][ny]&&nx>=1&&nx<=n&&ny>=1&&ny<=n&&a[nx][ny]==0)
{
vis[nx][ny]=1;
dfs(nx,ny);
vis[nx][ny]=0;
}
}
}
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<<cnt;
return 0;
}
1 条评论
-
30201沈俊彦 (2212116沈俊彦) LV 10 @ 2023-07-17 20:37:37
//AC了 #include<bits/stdc++.h> using namespace std; int n,a[15][15],cnt,dir[8][2]={{-1,0},{0,1},{1,0},{0,-1},{-1,-1},{-1,1},{1,1},{1,-1}}; bool vis[15][15]; void dfs(int x,int y) { vis[x][y]=1; if(x==1&&y==n) { cnt++; return; } else for(int i=0;i<8;i++) { int nx=x+dir[i][0],ny=y+dir[i][1]; if(!vis[nx][ny]&&a[nx][ny]==0&&nx>=1&&nx<=n&&ny>=1&&ny<=n) { vis[nx][ny]=1; dfs(nx,ny); vis[nx][ny]=0; } } } 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<<cnt; return 0; }
- 1
信息
- ID
- 1564
- 难度
- 8
- 分类
- (无)
- 标签
- 递交数
- 12
- 已通过
- 8
- 通过率
- 67%
- 被复制
- 8
- 上传者