首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用递归跟踪(Java)找到特定迷宫的解?

使用递归跟踪(Java)找到特定迷宫的解可以通过以下步骤实现:

  1. 定义迷宫的数据结构:创建一个二维数组来表示迷宫,使用特定的符号表示墙、通道和目标位置等。
  2. 创建递归函数:编写一个递归函数来搜索迷宫中的路径。该函数应该包含以下参数:当前位置、迷宫、路径列表。
  3. 终止条件:在递归函数中,首先需要检查当前位置是否为目标位置。如果是目标位置,则将路径列表返回作为解的一部分。如果不是目标位置,继续执行下面的步骤。
  4. 边界检查:在递归函数中,检查当前位置是否超出了迷宫的边界或者是墙。如果是的话,返回空的路径列表。
  5. 标记当前位置:将当前位置标记为已访问。
  6. 递归调用:分别尝试向上、向下、向左、向右四个方向移动,并将移动后的位置作为参数递归调用递归函数。
  7. 合并路径:将递归调用返回的路径列表与当前位置合并。
  8. 取消标记:取消当前位置的标记,以便在其他路径中重新访问。
  9. 返回路径列表:返回合并后的路径列表作为解的一部分。
  10. 调用递归函数:在主程序中,调用递归函数并将起始位置和初始路径列表作为参数传入。

下面是一个示例的Java代码:

代码语言:txt
复制
public class MazeSolver {
    // 定义迷宫的数据结构
    private static char[][] maze = {
        {'#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#'},
        {'#', 'S', '#', ' ', ' ', ' ', '#', ' ', '#', ' ', '#'},
        {'#', ' ', '#', '#', ' ', '#', '#', ' ', ' ', ' ', '#'},
        {'#', ' ', ' ', ' ', ' ', ' ', '#', ' ', '#', ' ', '#'},
        {'#', '#', '#', '#', '#', '#', '#', ' ', '#', ' ', '#'},
        {'#', ' ', ' ', ' ', '#', ' ', ' ', ' ', '#', ' ', '#'},
        {'#', '#', '#', ' ', '#', ' ', '#', '#', '#', ' ', '#'},
        {'#', ' ', ' ', ' ', '#', ' ', ' ', ' ', '#', ' ', '#'},
        {'#', ' ', '#', '#', '#', '#', '#', '#', '#', ' ', '#'},
        {'#', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'E', '#'},
        {'#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#'}
    };

    public static void main(String[] args) {
        // 调用递归函数
        ArrayList<Point> path = solveMaze(new Point(1, 1), new ArrayList<Point>());

        // 打印解的路径
        if (path != null) {
            System.out.println("迷宫的解路径:");
            for (Point point : path) {
                System.out.println("(" + point.x + ", " + point.y + ")");
            }
        } else {
            System.out.println("无解");
        }
    }

    // 递归函数
    private static ArrayList<Point> solveMaze(Point current, ArrayList<Point> path) {
        // 终止条件
        if (maze[current.x][current.y] == 'E') {
            return path;
        }

        // 边界检查
        if (maze[current.x][current.y] == '#' || maze[current.x][current.y] == 'V') {
            return null;
        }

        // 标记当前位置
        maze[current.x][current.y] = 'V';

        // 递归调用四个方向
        ArrayList<Point> up = solveMaze(new Point(current.x - 1, current.y), new ArrayList<Point>(path));
        ArrayList<Point> down = solveMaze(new Point(current.x + 1, current.y), new ArrayList<Point>(path));
        ArrayList<Point> left = solveMaze(new Point(current.x, current.y - 1), new ArrayList<Point>(path));
        ArrayList<Point> right = solveMaze(new Point(current.x, current.y + 1), new ArrayList<Point>(path));

        // 合并路径
        if (up != null) {
            path.add(current);
            return up;
        }
        if (down != null) {
            path.add(current);
            return down;
        }
        if (left != null) {
            path.add(current);
            return left;
        }
        if (right != null) {
            path.add(current);
            return right;
        }

        // 取消标记
        maze[current.x][current.y] = ' ';

        return null;
    }
}

该代码示例中的迷宫是一个二维字符数组,使用字符 '#' 表示墙,字符 ' ' 表示通道,字符 'S' 表示起始位置,字符 'E' 表示目标位置。递归函数 solveMaze() 根据当前位置和路径列表进行递归调用,返回路径列表作为解的一部分。在主程序中,调用递归函数并打印解的路径。

这里没有提及腾讯云相关产品和产品介绍链接地址,你可以根据自己的需求选择合适的云计算产品来存储和运行这个迷宫解决方案。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【数据结构与算法】递归、回溯、八皇后 一文打尽!

基本情况定义必须确保问题规模足够小,可以直接求解。 递归关系:递归关系定义了如何将原始问题分解为规模较小但同样结构子问题。通过递归关系,我们能够将问题逐步分解,并将子问题合并为原始问题。...它通常描述为在一个二维迷宫中,从起点到达终点路径规划问题。现在我们来说明如何通过递归来分析和解决迷宫问题。 问题分析: 首先,我们需要明确问题输入和输出。...在迷宫问题中,输入是一个迷宫地图,包含起点、终点以及障碍物位置信息。输出是一条从起点到终点路径,或者判断是否存在可行路径。 其次,我们要考虑如何表示迷宫和路径。...通常我们可以使用二维数组或矩阵表示迷宫,其中不可通过区域可以用特定符号或数字表示。路径可以用一个列表或栈来保存经过位置。 最后,我们需要定义问题规模和边界条件。...如果找到一条路径,则返回该路径;如果无法找到路径,则返回空值或特定标识。

22810

【愚公系列】软考中级-软件设计师 055-算法设计与分析(分治法和回溯法)

分治法:分治法是将问题分解成更小子问题,并且递归地解决子问题,最后将子问题合并成原问题。...回溯法通常用于解决在一组可能中找出特定问题,如八皇后问题和0-1背包问题。...在选择使用哪种算法思想时,需要根据具体问题特点和要求进行选择。...步骤:分解(将原问题分解成一系列子问题)——求解(递归地求解各子问题,若子问题足够小,则直接求解)——合并(将子问题合并成原问题)。...判断当前位置是否与已放置皇后冲突,如果冲突则尝试下一列。 如果找到一个合适位置,则记录当前位置,并递归地继续放置下一行皇后。

9410
  • 回溯法浅析:逆向思维领略算法之美

    后,他终于找到了牛头怪,并用阿里阿德涅公主给剑,奋力杀死了牛头怪。然后,他带着童男童女,顺着线路走出了迷宫。在阿里阿德涅公主帮助下,忒修斯等人一起逃出了克里特岛。...在定义了问题空间之后还应当考虑如何空间进行有效组织,以使得回溯法能够方便地搜索这些子空间中节点。在必要时候还应当注意优化搜索策略以提高算法实时性。...回溯法正是采用这种工作方式以递归为基础在空间内开展系统搜索工作,直到求出问题或者表明问题无解为止。...需要说明是因为回溯法是对空间深度优先搜索,所以可以考虑使用树结构递归遍历方式完成搜索工作。当然这并非是唯一途径,也可以考虑使用树结构递归遍历方法,那样整个回溯过程将以迭代形式完成。...下图显示了两种 8 个皇后不相互攻击情况。 ? 现在来看如何使用回溯法解决八皇后问题。这个算法将在棋盘上一列一列地摆放皇后直到 8 个皇后在不相互攻击情况下都被摆放在棋盘上,算法便终止。

    68530

    学好算法,你就可以轻轻松松解数独啦

    物品 i 重量是 wi,其价值为 pi,背包容量为 C。问应如何选择装入背包物品,使得装入背包中物品总价值最大? 图着色问题 迷宫问题 解数独问题 5....当当前节点无法找到可行,即出栈并回溯到上一节点,继续寻找上一节点下一个可行。...最终有两种可能: 寻找到可行 — 完成整个数独游戏棋盘填充就说明已经找到了游戏可行 无解 — 当所有元素都已经出栈且无法找到初始节点可行,就说明当前这个数独游戏是无解 下面就是我们递推函数...当然是可以递归正是回溯法最常采用方式。 6.1. 中止条件 每个空格就是数独问题问题节点,当我们找到一个空格时,填充当前最小可行,然后递归到下一个问题节点。...当无法找到可行时,返回无解,上一层递归继续寻找下一个可行。 直到全部递归完成或最外层函数无法找到可行,就标志着数独完成了获取或者这个数独无解。 6.2.

    80320

    算法之递归

    递归应用场景 看个实际应用场景,迷宫问题(回溯), 递归(Recursion) 递归概念 简单说: 递归就是方法自己调用自己,每次调用时传入不同变量**....递归调用机制 我列举两个小案例,来帮助大家理解递归,部分学员已经学习过递归了,这里在给大家回顾一下递归调用机制 打印问题 阶乘问题 使用图解方式说明了递归调用机制 代码演示 package cn.tedu.recursion...各种数学问题如: 8皇后问题 , 汉诺塔, 阶乘问题, 迷宫问题, 球和篮子问题(google编程大赛) 各种算法中也会使用递归,比如快排,归并排序,二分查找,分治算法等....将用栈解决问题–>递归代码比较简洁 递归需要遵守重要规则 执行一个方法时,就创建一个新受保护独立空间(栈空间) 方法局部变量是独立,不会相互影响, 比如n变量 如果方法中使用是引用类型变量...……直到第8个皇后也能放在一个不冲突位置,算是找到了一个正确 当得到一个正确时,在栈回退到上一个栈时,就会开始回溯,即将第一个皇后,放到第一列所有正确,全部得到.

    8110

    小白易懂回溯算法!!!

    许多复杂,规模较大问题都可以使用回溯法,有“通用解题方法”美称。 回溯算法解题套路模板: 1.回溯出口,当找到了一个问题时,存储该。...2.主体: 筛选满足约束备选项。这里用到了一个布尔数组uesd,用来记录哪些数是已经被使用。显然我们应该选取那些未被使用数。布尔数组技巧非常实用,应该记住。...size,无法构成一个完整,因此需要通过递归找到剩余 backTrack(nums,ret,temp, used); //进行回退操作...全排列 II 相较于上一题全排列,这题最大难点在于如何解决重复数字排列问题。...都需要回退剪 枝来寻找其他可能解 注意: 这题同样存在如何避免重复结果问题。

    65630

    递归递归之书:引言到第四章

    Recursion”中找到有关比较迭代和递归更多信息,网址为youtu.be/HXNhEYqFo0o。如果您想比较迭代和递归函数性能,您需要学习如何使用分析器。...,例如迷宫算法。...遍历树图任务与许多递归算法紧密相关,例如本章中迷宫算法和第十一章中迷宫生成程序。我们将研究树遍历算法,并使用它们来在树数据结构中查找特定名称。我们还将使用树遍历算法来获取树中最深节点算法。...最后,我们将看到迷宫可以表示为树数据结构,并使用树遍历和回溯来找到迷宫起点到出口路径。 使用树遍历 如果您在 Python 和 JavaScript 中编程,通常会使用列表、数组和字典数据结构。...一些节点具有小写字母,以对应图 4-5 中交叉点。 由于这种结构上相似性,我们可以使用树遍历算法来解决迷宫。这个树图中节点表示迷宫算器可以选择要遵循到下一个交叉点北、南、东或西路径之一。

    63810

    递归

    # 递归 递归应用场景 递归概念 递归调用机制 递归能解决什么问题 递归需要遵守重要规则 递归-迷宫问题 迷宫问题 代码实现 递归-八皇后问题 八皇后问题介绍 八皇后问题算法思路分析 代码实现 #...递归应用场景 看个实际应用场景,迷宫问题(回溯),递归(Recursion) # 递归概念 简单说:递归就是方法自己调用自己,每次调用时传入不同变量.递归有助于编程者解决复杂问题,同时可以让代码变得简洁...递归用于解决什么样问题 各种数学问题如:8皇后问题﹐汉诺塔,阶乘问题,迷宫问题,球和篮子问题(google编程大赛) 各种算法中也会使用递归,比如快排,归并排序,二分查找,分治算法等....将用栈解决问题-->第归代码比较简洁 # 递归需要遵守重要规则 递归需要遵守重要规则 执行一个方法时,就创建一个新受保护独立空间(栈空间) 方法局部变量是独立,不会相互影响,比如n变量 如果方法中使用是引用类型变量...……直到第8个皇后也能放在一个不冲突位置,算是找到了一个正确 当得到一个正确时,在栈回退到上一个栈时,就会开始回溯,即将第一个皇后,放到第一列所有正确,全部得到.

    68100

    【算法与数据结构】--算法基础--算法设计与分析

    状态转移:根据子问题之间关系,使用递归或迭代方式计算子问题,并将结果保存在表格中。 解决原问题:通过解决子问题,逐步构建出原问题最优。 返回结果:返回原问题最优。...通常,分治算法问题满足三个条件: 问题可以被分解成若干规模较小相同子问题。 子问题可以通过递归方式获得。 可以将子问题合并成原问题。...3.2 实现步骤: 问题建模:将原问题划分成若干子问题,定义子问题状态和递归关系。 递归求解:递归地求解子问题,直到问题规模足够小,可以直接解决。 合并子问题:将子问题合并成原问题。...下面将介绍回溯算法原理、实现步骤,并提供C#和Java实现示例。 4.1 原理: 回溯算法核心思想是深度优先搜索,它通过递归或迭代方式探索问题空间树。...找到或无解:如果找到问题,记录或处理解;如果无法继续或已探索完所有可能性,则回溯到上一步。 返回结果:返回最终或处理结果。

    25721

    TypeScript实现贪心算法与回溯算法

    贪心算法 贪心算法遵循一种近似解决问题技术,期盼通过每个阶段局部最优选择(当前最好),从而达到全局最优。 实例讲解 接下来我们通过两个例子讲解下贪心算法。...回溯算法会尝试所有可能动作(如果更快找到了解决办法就尝试较少次数)来解决问题。 实例讲解 接下来我们通过两个例子来讲解下回溯算法。...,那么如何利用回溯算法来得出上述答案?...寻找路径函数接收4个参数:横纵坐标x, y、迷宫maze、解决方案solution 由于该函数为递归实现,因此我们先确立递归基准条件:当x和y都到终点时。...当所有方案都尝试完毕后还是未能找到,则代表该迷宫无解,返回false。 接下来,我们把上述实现思路应用到一开始我们举例子中,最终构成解决方案如下表所示。

    76930

    Data Structure_Visualization排序可视化走迷宫生成迷宫扫雷

    迷宫 显示迷宫 迷宫生成等等再提,先看一下迷宫读取和显示。 ? 第一行是行数和列数,代表有101行101列,这个迷宫后面可以使用最小生成树生成。...首先固定了每一个迷宫出口和入口位置,从一开始,就需要从相邻四个方向走迷宫,如果可以就继续,不能就回头,其实就是递归实现。...如果迷宫有很多个,深度优先遍历那么久只会搜索到第一个碰到,搜索到那么就是一个随缘排序出来,广度优先就是会查找最短路径。广度优先可以找到无全图最短路径。...深度和广度递归差不多,只是使用数据结构不同而已。 生成迷宫 刚刚是走迷宫,刚刚生成那个用例其实就是生成迷宫。...对于一个迷宫,只有一个入口一个出口,为了简单化,入口就是第二行第一个口,出口是倒数第二行第一个口。而且只有一个,并且路径是连续,有些游戏里面的迷宫是有传送点,改变起来也很简单。

    96030

    轻轻松松学递归

    从上面来看,我们需要知道递归必须遵守规则: 执行一个方法时,就会在栈中创建一个新受保护独立空间 方法局部变量是独立,互不影响 如果方法中使用是引用类型变量(比如数组),就会共享该引用类型数据...同时,当方法执行完毕或返回时,该方法也就执行完毕 迷宫回溯问题 对于递归有了一个简单复习了解之后,我们用递归来解决一些编程中经典问题,我们先看一个迷宫回溯问题。...(Integer i : temp) { System.out.print(i + " "); } System.out.println(); } } /** * 使用递归求出迷宫路径...此时程序会返回,返回到上一次位置(即起点),也就是回溯了,然后继续摸索,发现仍然走不通,所以将该位置也置为3。 上面只是简单实现了迷宫路径寻找问题,接下来我们来看看如何寻找迷宫最短路径。...则放在第三列,以此类推,直至找到合适位置 第三个皇后也按第二步骤不断寻找,第四个皇后也如此,直至第八个皇后也找到了一个与其它皇后不冲突地方,此时找到了一个正确 当得到一个正确之后,在栈回退到上一个栈时

    47030

    图论--BFS总结

    ,当数据过于离散时可以考虑使用map,但是相应时间复杂度也会上升,如果真的要将所有状态限定在一个较小范围,可以使用双hash,不过一般状态相对来说不会太难表示,而是考察对于每个搜索状态的如何设计转移...,我小于当前最优就意味着我子树中不存在最优,这一段说明见⑦。...,但是在题目中很难找到一眼可以剪枝关系,这就需要进一步推导与证明,当这一点学好之后,对于DP学习会发现,经过各种剪枝搜索就是DP,不采取递归手段访问每一可能状态。...3.反向BFS:   例如,在一个迷宫中有N个人,请找出最快走出迷宫那个人?...7.优先队列搜索 对于优先队列优化搜索,必须要证明当前最优扩展一定比不是最优扩展要优,即当前不是最优未来一定不是最优。不然使用优先队列优化搜索必错。

    45320

    【CPP】递归与回溯入门·八皇后问题

    八皇后问题,一个经典回溯算法问题。在8*8国际象棋棋盘上如何才能放上八只皇后棋子,使它们彼此不会互相攻击到。...回溯,顾名思义,就是像走迷宫一样,先随便找一条路开始走,当碰到死路时倒回到岔道口选择别的方向,也可以理解为电影《盗梦空间》中梦中梦,不断一层层深入,直到最里层找到了自己真正想要东西时,带着答案一层层退出...然后我们传入初始棋盘,皇后编号写入-1代表是一切开始,目标函数返回值是此问题总数,也是每个递归出来小问题数。 ?...当标识攻击范围时检测到其他皇后的话,返回0代表这层递归得不到八皇后其中一个并跳出这一层层递归,没有必要接下去深入搜索了,所以总解数sum+=0。 ?...接下来,当皇后找到了自己真正可放置地方后,先检测是不是第8个皇后,如果是则结束这底层递归,返回1让得到总解数+1。如果不是的话,就像一开始一样,开始遍历下一行,进入下一层递归,直到最深处。

    83120

    【Python数据结构与算法】--- 递归算法应用 --- |人工智能|探索扫地机器人工作原理

    “数据项为字符列表列表”这种两级列表方式来保存方格内容 采用不同字符来分别代表“通道为空格 " ,“墙壁我为+”,“海龟投放点S"从一个文本文件逐行读入迷宫数据 2.探索迷宫: 算法思路 龟龟探索迷宫递归算法思路如下...,以新位置递归调用探索迷宫; 如果向西还找不到出口,那么将海龟从原位置向东移动一步,以新位置递归调用探索迷宫; 如果上面四个方向都找不到出口,那么这个迷宫没有出口!...递归调用“基本结束条件” 归纳如下 : 海龟碰到“墙壁”方格,递归调用结束,返回失败. 海龟碰到“面包屑”方格,表示此方格已访问过递归调用结束,返回失败....海龟在四个方向上探索都失败,递归调用结束返回失败 3.乌龟走迷宫实现代码: import turtle #迷宫搜索程序全局常量 START = "S" #--->起始位置 OBSTACLE = "+"...全文总结: 这篇文章主要讲解是,如何递归算法解决乌龟走迷宫问题,这个问题类似于我们扫地机器人,但是这个算法存在这一写缺点,比如说 时间方面和距离方面.如果我们要利用这个算法来写机器人我们可以从记录路径信息

    12910

    Data Structure_Visualization概率模拟排序可视化走迷宫生成迷宫

    迷宫 显示迷宫 迷宫生成等等再提,先看一下迷宫读取和显示。 ? 第一行是行数和列数,代表有101行101列,这个迷宫后面可以使用最小生成树生成。...首先固定了每一个迷宫出口和入口位置,从一开始,就需要从相邻四个方向走迷宫,如果可以就继续,不能就回头,其实就是递归实现。...如果迷宫有很多个,深度优先遍历那么久只会搜索到第一个碰到,搜索到那么就是一个随缘排序出来,广度优先就是会查找最短路径。广度优先可以找到无全图最短路径。...深度和广度递归差不多,只是使用数据结构不同而已。 生成迷宫 刚刚是走迷宫,刚刚生成那个用例其实就是生成迷宫。...对于一个迷宫,只有一个入口一个出口,为了简单化,入口就是第二行第一个口,出口是倒数第二行第一个口。而且只有一个,并且路径是连续,有些游戏里面的迷宫是有传送点,改变起来也很简单。

    82960

    迷宫连通性判断

    时间限制: 3 Sec 内存限制: 128 MB难度:Easy 题目描述 小明最近沉迷于一个游戏,但是他在玩游戏中经常遇到各种各样迷宫,其中既有走得通迷宫也有走不通迷宫。...输出 判断每个迷宫是否能从左上角起点走到右下角终点,每个迷宫输出“YES”或“NO”代表这个迷宫是否可以走通。...样例输入 2 3 1 1 0 0 1 1 0 0 1 4 1 1 0 1 0 0 1 1 1 1 0 1 1 1 0 1 样例输出 YES NO 提示 使用C++语言解决问题,比Java、JS快数倍...当然可以调用方法结束进程,但如果后面还有活要做,则需要结束当前递归栈,也就是第一次调用递归函数地方,return只能结束当前函数,但当前函数已经是递归第n层栈了,下面还有好多父函数,如何直接结束至栈底呢...次递归优先走右下,再走左上,这样到达终点时间更短一些。

    75360

    递归递归之书:第十章到第十四章

    要搜索基础文件夹和用于查找匹配文件匹配函数。对于该文件夹中每个子文件夹,都会使用子文件夹作为新文件夹参数进行递归调用。 这个参数如何变得更接近基本情况?...我们将在这里使用递归回溯算法生成迷宫倾向于具有长走廊(连接分支交叉点迷宫空间)并且相当容易解决。...总结 正如你刚学到,我们不仅可以使用递归来解决迷宫问题(通过遍历它们作为树数据结构),还可以使用递归回溯算法来生成迷宫。该算法在迷宫中“carves out”走廊,在遇到死胡同时回溯到较早点。...找到空白空间坐标 我们程序使用findBlankSpace()函数来找到板上空白空间 x、y 坐标。...Python 程序使用 Pillow 图像库读取这些图像数据并生成递归图像。 首先,我们将介绍如何安装 Pillow 库以及 Droste 生成器算法工作原理。

    53110

    Java 数据追踪神器 FlowTracker, 轻松掌握 Java 数据流动

    对于那些复杂 Java 项目来说,尤其是涉及到很多对象间交互情况,这个工具能够让你从混乱代码世界中迅速找到问题根源。...我们可以通过打印日志、使用调试工具去一步步跟踪,但这些方式往往繁琐且低效。...• 复杂业务逻辑:涉及到多个模块和类交互时,如何快速找到问题?如果你经常遇到这些问题,FlowTracker 将是你救星。3. 如何使用 FlowTracker?...让我们具体看看如何在项目中使用 FlowTracker。首先,你可以从 GitHub 下载并安装它。安装过程非常简单,按照说明将其集成到你 Java 项目中即可。...就像 GPS 导航一样,FlowTracker 帮助你迅速找到数据流向,不再迷失在代码迷宫中。你不妨试试它,也许下一次调试时,你就会感叹它方便与高效。

    28910

    递归

    递归 概念:递归就是方法自己调用自己,每次调用时传入不同变量。递归有助于编程者解决复杂问题,同时可以让代码变得简洁。...能解决什么问题 递归用于解决什么样问题 1) 各种数学问题如: 8皇后问题 , 汉诺塔, 阶乘问题, 迷宫问题, 球和篮子问题(google编程大赛) 2) 各种算法中也会使用递归,比如快排,...) 方法局部变量是独立,不会相互影响, 比如 n 变量 3) 如果方法中使用是引用类型变量(比如数组), 就会共享该引用类型数据. 4) 重要:递归必须向退出递归条件逼近,否则就是无限递归,...递归-迷宫问题 模拟迷宫地图,使用数组,将数字1来作为墙面。2表示通往出口路径。 作为一个有开发经验的人来说,理解这段代码并不难。...、第二列……直到第8个皇后也能放在一个不冲突位置,算是找到了一个正确 当得到一个正确时,在栈回退到上一个栈时,就会开始回溯,即将第一个皇后,放到第一列所有正确,全部得到 然后回头继续第一个皇后放第二列

    35920
    领券