- 迷宫 路径总数
- @ 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
- 上传者