迷宫问题,求最短路径长度、最短路径条数、所有最短路径,DFS+BFS+栈+队列

一组测试数据得到的结果

8 8 3
3 3
4 5
6 6
2 1
7 7

最短路径   1 :
(2, 1) (3, 1) (4, 1) (5, 1) (6, 1) (7, 1) (7, 2) (7, 3) (7, 4) (7, 5) (7, 6) (7, 7)

最短路径   2 :
(2, 1) (3, 1) (4, 1) (5, 1) (6, 1) (6, 2) (7, 2) (7, 3) (7, 4) (7, 5) (7, 6) (7, 7)

最短路径   3 :
(2, 1) (3, 1) (4, 1) (5, 1) (6, 1) (6, 2) (6, 3) (7, 3) (7, 4) (7, 5) (7, 6) (7, 7)

最短路径   4 :
(2, 1) (3, 1) (4, 1) (5, 1) (6, 1) (6, 2) (6, 3) (6, 4) (7, 4) (7, 5) (7, 6) (7, 7)

最短路径   5 :
(2, 1) (3, 1) (4, 1) (5, 1) (6, 1) (6, 2) (6, 3) (6, 4) (6, 5) (7, 5) (7, 6) (7, 7)

最短路径   6 :
(2, 1) (3, 1) (4, 1) (5, 1) (5, 2) (6, 2) (7, 2) (7, 3) (7, 4) (7, 5) (7, 6) (7, 7)

最短路径   7 :
(2, 1) (3, 1) (4, 1) (5, 1) (5, 2) (6, 2) (6, 3) (7, 3) (7, 4) (7, 5) (7, 6) (7, 7)

最短路径   8 :
(2, 1) (3, 1) (4, 1) (5, 1) (5, 2) (6, 2) (6, 3) (6, 4) (7, 4) (7, 5) (7, 6) (7, 7)

最短路径   9 :
(2, 1) (3, 1) (4, 1) (5, 1) (5, 2) (6, 2) (6, 3) (6, 4) (6, 5) (7, 5) (7, 6) (7, 7)

最短路径  10 :
(2, 1) (3, 1) (4, 1) (5, 1) (5, 2) (5, 3) (6, 3) (7, 3) (7, 4) (7, 5) (7, 6) (7, 7)

最短路径  11 :
(2, 1) (3, 1) (4, 1) (5, 1) (5, 2) (5, 3) (6, 3) (6, 4) (7, 4) (7, 5) (7, 6) (7, 7)

最短路径  12 :
(2, 1) (3, 1) (4, 1) (5, 1) (5, 2) (5, 3) (6, 3) (6, 4) (6, 5) (7, 5) (7, 6) (7, 7)

最短路径  13 :
(2, 1) (3, 1) (4, 1) (5, 1) (5, 2) (5, 3) (5, 4) (6, 4) (7, 4) (7, 5) (7, 6) (7, 7)

最短路径  14 :
(2, 1) (3, 1) (4, 1) (5, 1) (5, 2) (5, 3) (5, 4) (6, 4) (6, 5) (7, 5) (7, 6) (7, 7)

最短路径  15 :
(2, 1) (3, 1) (4, 1) (5, 1) (5, 2) (5, 3) (5, 4) (5, 5) (6, 5) (7, 5) (7, 6) (7, 7)

最短路径  16 :
(2, 1) (3, 1) (4, 1) (5, 1) (5, 2) (5, 3) (5, 4) (5, 5) (5, 6) (5, 7) (6, 7) (7, 7)

最短路径  17 :
(2, 1) (3, 1) (4, 1) (4, 2) (5, 2) (6, 2) (7, 2) (7, 3) (7, 4) (7, 5) (7, 6) (7, 7)

最短路径  18 :
(2, 1) (3, 1) (4, 1) (4, 2) (5, 2) (6, 2) (6, 3) (7, 3) (7, 4) (7, 5) (7, 6) (7, 7)

最短路径  19 :
(2, 1) (3, 1) (4, 1) (4, 2) (5, 2) (6, 2) (6, 3) (6, 4) (7, 4) (7, 5) (7, 6) (7, 7)

最短路径  20 :
(2, 1) (3, 1) (4, 1) (4, 2) (5, 2) (6, 2) (6, 3) (6, 4) (6, 5) (7, 5) (7, 6) (7, 7)

最短路径  21 :
(2, 1) (3, 1) (4, 1) (4, 2) (5, 2) (5, 3) (6, 3) (7, 3) (7, 4) (7, 5) (7, 6) (7, 7)

最短路径  22 :
(2, 1) (3, 1) (4, 1) (4, 2) (5, 2) (5, 3) (6, 3) (6, 4) (7, 4) (7, 5) (7, 6) (7, 7)

最短路径  23 :
(2, 1) (3, 1) (4, 1) (4, 2) (5, 2) (5, 3) (6, 3) (6, 4) (6, 5) (7, 5) (7, 6) (7, 7)

最短路径  24 :
(2, 1) (3, 1) (4, 1) (4, 2) (5, 2) (5, 3) (5, 4) (6, 4) (7, 4) (7, 5) (7, 6) (7, 7)

最短路径  25 :
(2, 1) (3, 1) (4, 1) (4, 2) (5, 2) (5, 3) (5, 4) (6, 4) (6, 5) (7, 5) (7, 6) (7, 7)

最短路径  26 :
(2, 1) (3, 1) (4, 1) (4, 2) (5, 2) (5, 3) (5, 4) (5, 5) (6, 5) (7, 5) (7, 6) (7, 7)

最短路径  27 :
(2, 1) (3, 1) (4, 1) (4, 2) (5, 2) (5, 3) (5, 4) (5, 5) (5, 6) (5, 7) (6, 7) (7, 7)

最短路径  28 :
(2, 1) (3, 1) (4, 1) (4, 2) (4, 3) (5, 3) (6, 3) (7, 3) (7, 4) (7, 5) (7, 6) (7, 7)

最短路径  29 :
(2, 1) (3, 1) (4, 1) (4, 2) (4, 3) (5, 3) (6, 3) (6, 4) (7, 4) (7, 5) (7, 6) (7, 7)

最短路径  30 :
(2, 1) (3, 1) (4, 1) (4, 2) (4, 3) (5, 3) (6, 3) (6, 4) (6, 5) (7, 5) (7, 6) (7, 7)

最短路径  31 :
(2, 1) (3, 1) (4, 1) (4, 2) (4, 3) (5, 3) (5, 4) (6, 4) (7, 4) (7, 5) (7, 6) (7, 7)

最短路径  32 :
(2, 1) (3, 1) (4, 1) (4, 2) (4, 3) (5, 3) (5, 4) (6, 4) (6, 5) (7, 5) (7, 6) (7, 7)

最短路径  33 :
(2, 1) (3, 1) (4, 1) (4, 2) (4, 3) (5, 3) (5, 4) (5, 5) (6, 5) (7, 5) (7, 6) (7, 7)

最短路径  34 :
(2, 1) (3, 1) (4, 1) (4, 2) (4, 3) (5, 3) (5, 4) (5, 5) (5, 6) (5, 7) (6, 7) (7, 7)

最短路径  35 :
(2, 1) (3, 1) (4, 1) (4, 2) (4, 3) (4, 4) (5, 4) (6, 4) (7, 4) (7, 5) (7, 6) (7, 7)

最短路径  36 :
(2, 1) (3, 1) (4, 1) (4, 2) (4, 3) (4, 4) (5, 4) (6, 4) (6, 5) (7, 5) (7, 6) (7, 7)

最短路径  37 :
(2, 1) (3, 1) (4, 1) (4, 2) (4, 3) (4, 4) (5, 4) (5, 5) (6, 5) (7, 5) (7, 6) (7, 7)

最短路径  38 :
(2, 1) (3, 1) (4, 1) (4, 2) (4, 3) (4, 4) (5, 4) (5, 5) (5, 6) (5, 7) (6, 7) (7, 7)

最短路径  39 :
(2, 1) (3, 1) (3, 2) (4, 2) (5, 2) (6, 2) (7, 2) (7, 3) (7, 4) (7, 5) (7, 6) (7, 7)

最短路径  40 :
(2, 1) (3, 1) (3, 2) (4, 2) (5, 2) (6, 2) (6, 3) (7, 3) (7, 4) (7, 5) (7, 6) (7, 7)

最短路径  41 :
(2, 1) (3, 1) (3, 2) (4, 2) (5, 2) (6, 2) (6, 3) (6, 4) (7, 4) (7, 5) (7, 6) (7, 7)

最短路径  42 :
(2, 1) (3, 1) (3, 2) (4, 2) (5, 2) (6, 2) (6, 3) (6, 4) (6, 5) (7, 5) (7, 6) (7, 7)

最短路径  43 :
(2, 1) (3, 1) (3, 2) (4, 2) (5, 2) (5, 3) (6, 3) (7, 3) (7, 4) (7, 5) (7, 6) (7, 7)

最短路径  44 :
(2, 1) (3, 1) (3, 2) (4, 2) (5, 2) (5, 3) (6, 3) (6, 4) (7, 4) (7, 5) (7, 6) (7, 7)

最短路径  45 :
(2, 1) (3, 1) (3, 2) (4, 2) (5, 2) (5, 3) (6, 3) (6, 4) (6, 5) (7, 5) (7, 6) (7, 7)

最短路径  46 :
(2, 1) (3, 1) (3, 2) (4, 2) (5, 2) (5, 3) (5, 4) (6, 4) (7, 4) (7, 5) (7, 6) (7, 7)

最短路径  47 :
(2, 1) (3, 1) (3, 2) (4, 2) (5, 2) (5, 3) (5, 4) (6, 4) (6, 5) (7, 5) (7, 6) (7, 7)

最短路径  48 :
(2, 1) (3, 1) (3, 2) (4, 2) (5, 2) (5, 3) (5, 4) (5, 5) (6, 5) (7, 5) (7, 6) (7, 7)

最短路径  49 :
(2, 1) (3, 1) (3, 2) (4, 2) (5, 2) (5, 3) (5, 4) (5, 5) (5, 6) (5, 7) (6, 7) (7, 7)

最短路径  50 :
(2, 1) (3, 1) (3, 2) (4, 2) (4, 3) (5, 3) (6, 3) (7, 3) (7, 4) (7, 5) (7, 6) (7, 7)

最短路径  51 :
(2, 1) (3, 1) (3, 2) (4, 2) (4, 3) (5, 3) (6, 3) (6, 4) (7, 4) (7, 5) (7, 6) (7, 7)

最短路径  52 :
(2, 1) (3, 1) (3, 2) (4, 2) (4, 3) (5, 3) (6, 3) (6, 4) (6, 5) (7, 5) (7, 6) (7, 7)

最短路径  53 :
(2, 1) (3, 1) (3, 2) (4, 2) (4, 3) (5, 3) (5, 4) (6, 4) (7, 4) (7, 5) (7, 6) (7, 7)

最短路径  54 :
(2, 1) (3, 1) (3, 2) (4, 2) (4, 3) (5, 3) (5, 4) (6, 4) (6, 5) (7, 5) (7, 6) (7, 7)

最短路径  55 :
(2, 1) (3, 1) (3, 2) (4, 2) (4, 3) (5, 3) (5, 4) (5, 5) (6, 5) (7, 5) (7, 6) (7, 7)

最短路径  56 :
(2, 1) (3, 1) (3, 2) (4, 2) (4, 3) (5, 3) (5, 4) (5, 5) (5, 6) (5, 7) (6, 7) (7, 7)

最短路径  57 :
(2, 1) (3, 1) (3, 2) (4, 2) (4, 3) (4, 4) (5, 4) (6, 4) (7, 4) (7, 5) (7, 6) (7, 7)

最短路径  58 :
(2, 1) (3, 1) (3, 2) (4, 2) (4, 3) (4, 4) (5, 4) (6, 4) (6, 5) (7, 5) (7, 6) (7, 7)

最短路径  59 :
(2, 1) (3, 1) (3, 2) (4, 2) (4, 3) (4, 4) (5, 4) (5, 5) (6, 5) (7, 5) (7, 6) (7, 7)

最短路径  60 :
(2, 1) (3, 1) (3, 2) (4, 2) (4, 3) (4, 4) (5, 4) (5, 5) (5, 6) (5, 7) (6, 7) (7, 7)

最短路径  61 :
(2, 1) (2, 2) (3, 2) (4, 2) (5, 2) (6, 2) (7, 2) (7, 3) (7, 4) (7, 5) (7, 6) (7, 7)

最短路径  62 :
(2, 1) (2, 2) (3, 2) (4, 2) (5, 2) (6, 2) (6, 3) (7, 3) (7, 4) (7, 5) (7, 6) (7, 7)

最短路径  63 :
(2, 1) (2, 2) (3, 2) (4, 2) (5, 2) (6, 2) (6, 3) (6, 4) (7, 4) (7, 5) (7, 6) (7, 7)

最短路径  64 :
(2, 1) (2, 2) (3, 2) (4, 2) (5, 2) (6, 2) (6, 3) (6, 4) (6, 5) (7, 5) (7, 6) (7, 7)

最短路径  65 :
(2, 1) (2, 2) (3, 2) (4, 2) (5, 2) (5, 3) (6, 3) (7, 3) (7, 4) (7, 5) (7, 6) (7, 7)

最短路径  66 :
(2, 1) (2, 2) (3, 2) (4, 2) (5, 2) (5, 3) (6, 3) (6, 4) (7, 4) (7, 5) (7, 6) (7, 7)

最短路径  67 :
(2, 1) (2, 2) (3, 2) (4, 2) (5, 2) (5, 3) (6, 3) (6, 4) (6, 5) (7, 5) (7, 6) (7, 7)

最短路径  68 :
(2, 1) (2, 2) (3, 2) (4, 2) (5, 2) (5, 3) (5, 4) (6, 4) (7, 4) (7, 5) (7, 6) (7, 7)

最短路径  69 :
(2, 1) (2, 2) (3, 2) (4, 2) (5, 2) (5, 3) (5, 4) (6, 4) (6, 5) (7, 5) (7, 6) (7, 7)

最短路径  70 :
(2, 1) (2, 2) (3, 2) (4, 2) (5, 2) (5, 3) (5, 4) (5, 5) (6, 5) (7, 5) (7, 6) (7, 7)

最短路径  71 :
(2, 1) (2, 2) (3, 2) (4, 2) (5, 2) (5, 3) (5, 4) (5, 5) (5, 6) (5, 7) (6, 7) (7, 7)

最短路径  72 :
(2, 1) (2, 2) (3, 2) (4, 2) (4, 3) (5, 3) (6, 3) (7, 3) (7, 4) (7, 5) (7, 6) (7, 7)

最短路径  73 :
(2, 1) (2, 2) (3, 2) (4, 2) (4, 3) (5, 3) (6, 3) (6, 4) (7, 4) (7, 5) (7, 6) (7, 7)

最短路径  74 :
(2, 1) (2, 2) (3, 2) (4, 2) (4, 3) (5, 3) (6, 3) (6, 4) (6, 5) (7, 5) (7, 6) (7, 7)

最短路径  75 :
(2, 1) (2, 2) (3, 2) (4, 2) (4, 3) (5, 3) (5, 4) (6, 4) (7, 4) (7, 5) (7, 6) (7, 7)

最短路径  76 :
(2, 1) (2, 2) (3, 2) (4, 2) (4, 3) (5, 3) (5, 4) (6, 4) (6, 5) (7, 5) (7, 6) (7, 7)

最短路径  77 :
(2, 1) (2, 2) (3, 2) (4, 2) (4, 3) (5, 3) (5, 4) (5, 5) (6, 5) (7, 5) (7, 6) (7, 7)

最短路径  78 :
(2, 1) (2, 2) (3, 2) (4, 2) (4, 3) (5, 3) (5, 4) (5, 5) (5, 6) (5, 7) (6, 7) (7, 7)

最短路径  79 :
(2, 1) (2, 2) (3, 2) (4, 2) (4, 3) (4, 4) (5, 4) (6, 4) (7, 4) (7, 5) (7, 6) (7, 7)

最短路径  80 :
(2, 1) (2, 2) (3, 2) (4, 2) (4, 3) (4, 4) (5, 4) (6, 4) (6, 5) (7, 5) (7, 6) (7, 7)

最短路径  81 :
(2, 1) (2, 2) (3, 2) (4, 2) (4, 3) (4, 4) (5, 4) (5, 5) (6, 5) (7, 5) (7, 6) (7, 7)

最短路径  82 :
(2, 1) (2, 2) (3, 2) (4, 2) (4, 3) (4, 4) (5, 4) (5, 5) (5, 6) (5, 7) (6, 7) (7, 7)

最短路径  83 :
(2, 1) (2, 2) (2, 3) (2, 4) (3, 4) (4, 4) (5, 4) (6, 4) (7, 4) (7, 5) (7, 6) (7, 7)

最短路径  84 :
(2, 1) (2, 2) (2, 3) (2, 4) (3, 4) (4, 4) (5, 4) (6, 4) (6, 5) (7, 5) (7, 6) (7, 7)

最短路径  85 :
(2, 1) (2, 2) (2, 3) (2, 4) (3, 4) (4, 4) (5, 4) (5, 5) (6, 5) (7, 5) (7, 6) (7, 7)

最短路径  86 :
(2, 1) (2, 2) (2, 3) (2, 4) (3, 4) (4, 4) (5, 4) (5, 5) (5, 6) (5, 7) (6, 7) (7, 7)

最短路径  87 :
(2, 1) (2, 2) (2, 3) (2, 4) (3, 4) (3, 5) (3, 6) (4, 6) (5, 6) (5, 7) (6, 7) (7, 7)

最短路径  88 :
(2, 1) (2, 2) (2, 3) (2, 4) (3, 4) (3, 5) (3, 6) (4, 6) (4, 7) (5, 7) (6, 7) (7, 7)

最短路径  89 :
(2, 1) (2, 2) (2, 3) (2, 4) (3, 4) (3, 5) (3, 6) (3, 7) (4, 7) (5, 7) (6, 7) (7, 7)

最短路径  90 :
(2, 1) (2, 2) (2, 3) (2, 4) (2, 5) (3, 5) (3, 6) (4, 6) (5, 6) (5, 7) (6, 7) (7, 7)

最短路径  91 :
(2, 1) (2, 2) (2, 3) (2, 4) (2, 5) (3, 5) (3, 6) (4, 6) (4, 7) (5, 7) (6, 7) (7, 7)

最短路径  92 :
(2, 1) (2, 2) (2, 3) (2, 4) (2, 5) (3, 5) (3, 6) (3, 7) (4, 7) (5, 7) (6, 7) (7, 7)

最短路径  93 :
(2, 1) (2, 2) (2, 3) (2, 4) (2, 5) (2, 6) (3, 6) (4, 6) (5, 6) (5, 7) (6, 7) (7, 7)

最短路径  94 :
(2, 1) (2, 2) (2, 3) (2, 4) (2, 5) (2, 6) (3, 6) (4, 6) (4, 7) (5, 7) (6, 7) (7, 7)

最短路径  95 :
(2, 1) (2, 2) (2, 3) (2, 4) (2, 5) (2, 6) (3, 6) (3, 7) (4, 7) (5, 7) (6, 7) (7, 7)

最短路径  96 :
(2, 1) (2, 2) (2, 3) (2, 4) (2, 5) (2, 6) (2, 7) (3, 7) (4, 7) (5, 7) (6, 7) (7, 7)

最短路径长度: 11

最短路径条数: 96

 

#include <iostream>
#include <string>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <queue>
#include <stack>

using namespace std;

const int SIZE = 102;

//边界数组,四个方向,按照下、右、上、左的顺序
int coordinate[4][2] = {1,0, 0,1, -1,0, 0,-1};

stack<int> sx;
stack<int> sy;
stack<int> sxCopy;
stack<int> syCopy;

int mazeBfs[SIZE][SIZE];  //广搜用的迷宫
int mazeDfs[SIZE][SIZE];  //深搜用的迷宫

int oddEven[SIZE][SIZE];  //奇偶剪枝状态数组

int n;  //迷宫行数
int m;  //迷宫列数
int k;  //封闭房间数
int kr, kl; //每个封闭房间的行号和列号
int p, q;  //小鼠a的行号和列号
int r, s;  //小鼠b的行号和列号
int ShortestPathLength; //最短路径的长度
int ShortestPahtNumber; //最短路径的条数
int ans = 1; //输出第ans条最短路径

//广搜求最短路径长度
//int BFS(int p, int q, int r, int s, int len, int n, int m);
int BFS();

//深搜求最短路径条数
//void DFS(int x, int y, int r, int s, int len, int n, int m, int shortlength);
void DFS(int x, int y, int len);

int main()
{
    while (scanf("%d%d%d", &n, &m, &k) != EOF)
    {
        memset(mazeBfs, 0, sizeof(mazeBfs));  //初始化迷宫
        memset(mazeDfs, 0, sizeof(mazeDfs));

        //奇偶剪枝数组初始化
        for (int i=0; i<=n; i++)
        {
            if (i%2 == 1)
            {
               for (int j=0; j<=m; j++)
               {
                   if (j%2 == 1)
                   {
                       oddEven[i][j] = 1;
                   }
                   else
                   {
                       oddEven[i][j] = 0;
                   }
               }
            }
            else
            {
                for (int j=0; j<=m; j++)
                {
                    if (j%2 == 1)
                    {
                        oddEven[i][j] = 0;
                    }
                    else
                    {
                        oddEven[i][j] = 1;
                    }
                }

            }
        }

        for (int i=1; i<=k; i++)
        {
            scanf("%d%d", &kr, &kl);  //输入封闭房间的坐标

            //存入迷宫中,迷宫中,1代表封闭房间,0代表可以走
            mazeBfs[kr][kl] = 1;
            mazeDfs[kr][kl] = 1;
        }

        scanf("%d%d", &p, &q);  //小鼠a的坐标
        scanf("%d%d", &r, &s);  //小鼠b的坐标

        //求最短路径长度
        ShortestPathLength = BFS();
        if (ShortestPathLength == -1) //没路可走时
        {
            printf("No Solution!\n");
            continue;
        }

        //求最短路径条数及输出所有的最短路径
        ShortestPahtNumber = 0;
        sx.push(p);
        sy.push(q);
        DFS(p, q, 0);

        //输出结果
        printf("最短路径长度: %d\n\n", ShortestPathLength);
        printf("最短路径条数: %d\n\n", ShortestPahtNumber);
    }

    return 0;
}

int BFS()
{
    queue<int> qx;  //存横坐标的队列
    queue<int> qy;  //存纵坐标的队列
    queue<int> qlen;  //存长度的队列
    int xa, ya; //当前节点坐标
    int length; //到达当前节点长度

    qx.push(p);
    qy.push(q);
    qlen.push(0);

    mazeBfs[p][q] = 1;

    while (!qx.empty())
    {
        if ((qx.front()==r) && (qy.front()==s)) //判断是否到达小鼠b
        {
            return qlen.front();
        }

        //临时保存队头值
        int xx, yy ,ll;
        xx = qx.front();
        yy = qy.front();
        ll = qlen.front();

        //保存完之后,出队
        qx.pop();
        qy.pop();
        qlen.pop();

        for (int i=0; i<4; i++)
        {
            //算第i方向上的新值
            xa = xx + coordinate[i][0];
            ya = yy + coordinate[i][1];
            length = ll;

            //新的点在迷宫内,且没有走过
            if ((xa>=1) && (xa<=n) && (ya>=1) && (ya<=m) && (mazeBfs[xa][ya]==0))
            {
                //入队
                qx.push(xa);
                qy.push(ya);
                length += 1;
                qlen.push(length);

                //标记新点
                mazeBfs[xa][ya] = 1;
            }
        }
    }

    return -1;  //如果没有路,返回0
}

void DFS(int x, int y, int len)
{
    if ((x==r) && (y==s) && (len==ShortestPathLength))  //找到一条最短路径
    {
        ShortestPahtNumber++;

        //输出最短路径
        printf("最短路径 %3d :\n", ans++);
        int j = sx.size();
        for (int i=1; i<=j; i++)
        {
           sxCopy.push(sx.top());
           sx.pop();

           syCopy.push(sy.top());
           sy.pop();
        }
        for (int i=1; i<=j; i++)
        {
            printf("(%d, %d) ", sxCopy.top(), syCopy.top());
            sx.push(sxCopy.top());
            sxCopy.pop();

            sy.push(syCopy.top());
            syCopy.pop();
        }
        printf("\n\n");
        return ;
    }

    //一般剪枝
    int theoryShortestLength; //当前节点到终点的理论最小值
    theoryShortestLength = (abs(x-r)) + (abs(y-s));
    if ((len+theoryShortestLength) > ShortestPathLength) //当前长度+理论最小值>最短路径长度
    {
        return ;
    }

    //奇偶剪枝
    if ((ShortestPathLength-len)%2 != ((abs(oddEven[x][y]-oddEven[r][s])) % 2))
    {
        return ;
    }

    for (int i=0; i<4; i++)
    {
        int xx, yy;
        xx = x + coordinate[i][0];
        yy = y + coordinate[i][1];

        if ((xx>=1) && (xx<=n) && (yy>=1) && (yy<=m) && (mazeDfs[xx][yy]==0))
        {
            sx.push(xx);
            sy.push(yy);
            mazeDfs[xx][yy] = 1;
            DFS(xx, yy, len+1);

            //回溯
            sx.pop();
            sy.pop();
            mazeDfs[xx][yy] = 0;
        }
    }
}

    原文作者:迷宫问题
    原文地址: https://blog.csdn.net/yibing2011/article/details/12259485
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞