题目*n皇后问题是如何在n×n的棋盘上放置n个皇后,并且让皇后之间不能互相攻击。给定一个整数n,返回n皇后问题的不同解的数量。*皇后的移动规则皇后的移动是:可以横、竖、斜移动,格数不限。因此,要求皇后不能互相攻击就相当于要求任意两个皇后不能在同一行、同一列或同一斜线上。示例示例1:输入:n=4输出:2解释:如上图所示,4皇后问题有两种不同的解决方案。示例2:输入:n=1输出:1提示:1<=n<=9思路定义判断当前位置的测试函数,约束包括,不能在同一行,不能在同一列,和不能在同一条对角线上(45度和135度)定义棋盘;标准回溯处理;使用回溯的具体方法是:在每一行依次放置一个皇后,每次新放置的皇后不能攻击已经放置的皇后,即新放置的皇后不能与任何一个已经放置的皇后在同一个列并在同一对角线上。当NNN个皇后都放好后,找出一个可能的解,将可能解的个数加111。图片来源及解题代码vartotalNQueens=function(n){letcount=0;//可以放置的皇后总数letisValid=(row,col,board,n)=>{//不用判断行,每次下移一行//判断数据是否相同columncontainsfor(leti=0;i=0&&j=0&&j>=0;j--,i---){if(board[i][j]==='Q'){returnfalse}}returntrue}letbackTracing=(row,board)=>{//转到最后一行,计算次数if(row===n){计数++;return}for(letx=0;xv=([...Array(n)]).fill('.'))//boardreturncount};Summary主要使用回溯算法;求解一个回溯问题其实就是一个决策树的遍历过程返回;}for(selection:path,selectionlist){进行选择;回溯(路径、选择列表);//递归回溯,撤销处理结果}}即:1.路径:即已经做出的选择。2、选择列表:即当前可以进行的选择。3.结束条件:即到达决策树底部,不能再做选择的条件。剪枝函数1.剪枝不能得到带约束可行解的子树2.不能利用目标函数得到最优解的子树回溯法的一般步骤:1.设置初始化方案(给变量赋初始值,读入已知数据等).)2.改变方法进行测试,如果所有试验都完成,转(7)3.判断方法是否成功(通过约束函数),如果不成功,转(2)4.的测试成功则继续前进再试5.如果仍然没有找到正确的解,则转(2)6.如果找到了解,记录并打印7.后退一步(回溯),如果没有返回到结束,转到(2)8.回到头部然后结束或者打印无解,每天精进,继续前进!