n后问题回溯算法 (1)用二维数组A[N][N]存储皇后位置,若第i行第j列放有皇后,则A[i][j]为非0值,否则值为0。 (2)分别用一维数组M[N]、L[2*N-1]、R[2*N-1]表示竖列、左斜线、右斜线是否放有皇后,有则值为1,否则值为0。 try(i,M,L,R,A) for(j=0;j<N;j++) if( 1 ) /*安全检查*/ { A[i][j]=i+1; /*放皇后*/ 2 ; if(i==N-1) 输出
时间: 2023-06-09 17:04:11 浏览: 67
基本算法回溯法N皇后问题
5星 · 资源好评率100%
这段代码是实现了经典的 n 皇后问题的回溯算法。具体来说,它通过二维数组 A 存储棋盘上每个格子是否有皇后,同时用三个一维数组 M、L、R 分别标记每一列、每一条左斜线和每一条右斜线上是否有皇后。在回溯过程中,它逐行从左往右尝试放置皇后,并进行安全性检查。若该位置安全,则将皇后放到该位置,并更新 M、L、R、A 数组。如果当前行是最后一行,那么就输出当前皇后摆法。
注意到这里的皇后数量 N 为一个固定值,因此在实际应用中可能需要修改该代码来支持不同的皇后数量,比如可以将 N 定义为函数参数或者全局变量。
阅读全文