zoukankan      html  css  js  c++  java
  • 迷宫寻找路径数

    题目背景

    给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过。给定起点坐标和终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案。在迷宫中移动有上下左右四种方式,每次只能移动一个方格。数据保证起点上没有障碍。

    输入格式

    第一行

    输入n行m列 障碍个数numObs

    第二行

    起始点xbegin ybegin 终止点xend yend

    接下来numObs行

    每行输入障碍的坐标

    输出格式

    路径条数

    输入:

    2 2 1
    1 1 2 2
    1 2

    输出

    1

    思路:采用bfs,四个方向,找到一个可以走的点就把当前点作为起点就进入递归,然后把当前点的四个方向遍历,然后再递归,一直到找到终点返回到上一个状态再寻找另一个方向,找完后再返回,知道上一个状态的点的方向都找完之后再返回一个状态继续,返回状态的同时记得要把标记走过的路再还原。

     1 #include<iostream>
     2 #include<vector>
     3 #include<algorithm>
     4 
     5 using namespace std;
     6 
     7 bool temp[7][7];//标记是否走过
     8 int maze[7][7];
     9 int dx[] = {0, 0, 1, -1};
    10 int dy[] = {-1, 1, 0, 0};
    11 int n, m, xbegin, ybegin, xend, yend, xObs, yObs, res = 0, numObs;
    12 
    13 void bfs(int x, int y)
    14 {
    15     if(x == xend && y == yend)
    16     {
    17         res++;
    18         return;
    19     }
    20     else
    21     {
    22         for(int i = 0; i < 4; i++)
    23         {
    24             if(temp[x+dx[i]][y+dy[i]] == 0 && maze[x+dx[i]][y+dy[i]] == 1)
    25             {
    26                 temp[x][y] = 1;
    27                 bfs(x+dx[i], y+dy[i]);
    28                 temp[x][y] = 0; //还原
    29             }
    30         }
    31     }
    32 }
    33 
    34 int main()
    35 {
    36     cin >> n >> m >> numObs;
    37     for(int i = 1; i <= n; i++)
    38     {
    39         for(int j = 1; j <= m; j++)
    40         {
    41             maze[i][j] = 1;
    42         }
    43     }
    44     cin >> xbegin >> ybegin >> xend >> yend;
    45     for(int i = 0; i < numObs; i++)
    46     {
    47         cin >> xObs >> yObs;
    48         maze[xObs][yObs] = 0;
    49     }
    50     bfs(xbegin, ybegin);
    51     cout << res << endl;
    52     system("pause");
    53     return 0;
    54 }
  • 相关阅读:
    xshell安装错解决方案
    (转)进程process和线程thread的关系
    selenium Gird
    python发布文件(windows)
    (转)ci
    selenium通过python字典获取配置
    selenium断言的分类
    C#从Image上读取文本
    C#屏幕截图
    WPF实现TextBox水印效果
  • 原文地址:https://www.cnblogs.com/ZhengLijie/p/12911061.html
Copyright © 2011-2022 走看看