zoukankan      html  css  js  c++  java
  • 【搜索BFS】走迷宫(bfs)

    走迷宫 

    Time Limit: 1000MS Memory limit: 65536K

    题目描述

    一个由n * m 个格子组成的迷宫,起点是(1, 1), 终点是(n, m),每次可以向上下左右四个方向任意走一步,并且有些格子是不能走动,求从起点到终点经过每个格子至多一次的走法数。

    输入

           第一行一个整数T 表示有T 组测试数据。(T <= 110)

    对于每组测试数据:

    第一行两个整数n, m,表示迷宫有n * m 个格子。(1 <= n, m <= 6, (n, m) !=(1, 1) ) 接下来n 行,每行m 个数。其中第i 行第j 个数是0 表示第i 行第j 个格子可以走,否则是1 表示这个格子不能走,输入保证起点和终点都是都是可以走的。

    任意两组测试数据间用一个空行分开。

    输出

     对于每组测试数据,输出一个整数R,表示有R 种走法。

    示例输入

    3
    2 2
    0 1
    0 0
    2 2
    0 1
    1 0
    2 3
    0 0 0
    0 0 0
    

    示例输出

    1
    0
    4

    //用dfs深搜就可以,每次找到终点,计数变量增1,dfs回溯的时候不要忘记把标记消去。

    #include<stdio.h>
    #include<string.h>
    #define MAXN 1000l
    int mapp[MAXN][MAXN];
    int vis[MAXN][MAXN];
    int dx[4]={-1, 0, 1, 0};
    int dy[4]={0, -1, 0, 1};
    int cnt=0, fy, fx;
    int n, m;
    void dfs(int x, int y)
    {
        int i;
        vis[x][y] =1;
        for(i=0; i<4; i++)
        {
            fx = x+dx[i];
            fy = y+dy[i];
            if( (fx>=1 && fx<=n) && (fy>=1 && fy<=m))
            {
                if(!vis[fx][fy] && !mapp[fx][fy])
                {
                    if(fx==n && fy==m)
                    {
                        cnt++;
                    }
                    else
                        dfs(fx, fy);
                }
            }
        }
        vis[x][y] = 0;
    }
    
    int main()
    {
        int T;
        scanf("%d", &T);
        while(T--)
        {
            memset(mapp, 0, sizeof(mapp));
            memset(vis, 0, sizeof(vis));
            scanf("%d%d", &n, &m);
            for(int i=1; i<=n; i++)
                for(int j=1; j<=m; j++)
                    scanf("%d", &mapp[i][j]);
            cnt = 0;
            dfs(1, 1);
            printf("%d
    ", cnt);
        }
        return 0;
    }


  • 相关阅读:
    设计模式(22) 策略模式
    设计模式(21) 状态模式
    设计模式(20) 观察者模式
    设计模式(19) 备忘录模式
    设计模式(18) 中介者模式
    巨杉数据库完成数亿元D轮融资,引领金融级分布式数据库发展
    ABP之IdentityServer4集成
    ABP中的多租户及多租户应用模块集成
    HDFS基础知识点总结
    如何优雅的处理SpringBoot接口的响应体
  • 原文地址:https://www.cnblogs.com/6bing/p/4123280.html
Copyright © 2011-2022 走看看