• 【dfs模板】找起点到终点的所有可能路径


    题目描述

    设有一个N*N(2≤N≤10)方格的迷宫,入口和出口分别在左上角和右上角。迷宫格子中分别放有0和1,0表示可通,1表示不能,迷宫走的规则如下图所示:即从某点开始,有八个方向可走,前进方格中数字为0时表示可通过,为1时表示不可通过,要另找路径。

    输入

    第一行一个正整数N,表示N*N的迷宫。
    接下来N行,为一个N*N矩阵。
     

    输出

    一行一个正整数,表示路径总数。
     
    #include <bits/stdc++.h>
    #define ll long long
    using namespace std;
    const int mod=998244353;
    int n;
    int mp[105][105];
    int dx[8]={-1,-1,-1,0,0,1,1,1};
    int dy[8]={-1,0,1,-1,1,-1,0,1};
    ll ant;
    int vis[105][105];
    bool check(int x,int y)
    {
        if(x<1||x>n||y<1||y>n)
            return 1;
        if(vis[x][y]||mp[x][y])
            return 1;
        return 0;
    }
    /*void bfs()
    {
        queue<node> qu;
        now.x=1,now.y=1;
        vis[now.x][now.y]=1;
        qu.push(now);
        while(!qu.empty())
        {
            now=qu.front();
            qu.pop();
            if(now.x==1&&now.y==n)
                ant++;
            for(int i=0;i<8;i++)
            {
                nex=now;
                nex.x+=dx[i];
                nex.y+=dy[i];
                if(check(nex.x,nex.y))
                    continue;
                qu.push(nex);
            }
        }
    }*/
    void dfs(int x,int y)
    {
        if(x==1&&y==n)
        {
            ant++;
            return;
        }
        for(int i=0;i<8;i++)
        {
            int nx=x+dx[i];
            int ny=y+dy[i];
            if(!check(nx,ny))
            {
                vis[nx][ny]=1;
                dfs(nx,ny);
                vis[nx][ny]=0;
            }
        }
    }
    int main()
    {
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=n;j++)
            {
                scanf("%d",&mp[i][j]);
            }
        }
        vis[1][1]=1;
        dfs(1,1);
        printf("%lld
    ",ant);
        return 0;
    }
  • 相关阅读:
    [nodejs] 静态资源服务器
    [nodejs]fs 读数据流和写数据流
    [nodejs]fs文件模块-练习
    [nodejs] fs文件模块
    利用SqlServer触发器自动更新表updatetime字段值
    python发送邮件至多人
    mybatis-plus获取Timestamp类型,无法获取变量null
    1.iOS第一个简单APP
    Mysql浅析
    Nginx编译安装Lua模块
  • 原文地址:https://www.cnblogs.com/Diliiiii/p/10305769.html
Copyright © 2020-2023  润新知