Python N皇后算法中的对角线检查算法
我试图用python实现N-Queens问题。在设计算法时,我需要一些帮助,以检查是否给定了皇后的位置,并检查电路板上是否有其他皇后位于其对角线上 我正在尝试设计一个函数Python N皇后算法中的对角线检查算法,python,algorithm,language-agnostic,n-queens,Python,Algorithm,Language Agnostic,N Queens,我试图用python实现N-Queens问题。在设计算法时,我需要一些帮助,以检查是否给定了皇后的位置,并检查电路板上是否有其他皇后位于其对角线上 我正在尝试设计一个函数对角线检查(board,row,col)其中board是数组的N*N矩阵,其中“1”表示女王在场,“0”表示缺席。 我将把皇后的数组和位置(行、列)传递给函数。如果对角线上有任何其他皇后,则我的函数必须返回false,否则返回true 如果有人能帮助我使用对角线检查函数的算法。不查找任何特定的语言代码。让左上角为(0,0) 正方
对角线检查(board,row,col)
其中board是数组的N*N矩阵,其中“1”表示女王在场,“0”表示缺席。
我将把皇后的数组和位置(行、列)传递给函数。如果对角线上有任何其他皇后,则我的函数必须返回false,否则返回true
如果有人能帮助我使用
对角线检查
函数的算法。不查找任何特定的语言代码。让左上角为(0,0)
正方形(行,列)的右下方向对角线为col行+7
正方形(行,列)的右上方向对角线为row+col
只需检查两个皇后是否具有相同的col行+7
或row+col
即可告诉您两个皇后是否位于同一对角线上。如果您仍然有点困惑,请在谷歌上查找棋盘图像。可能的重复
boolean diagonalCheck(board, row, col) {
int tempRow ;
int tempCol ;
//algorithm to check left diagonal
if (row >= col) {
tempRow = row-col;
tempCol = 0;
} else {
tempRow = 0;
tempCol = col-row;
}
while (tempRow != N-1 && tempCol != N-1) {
if (tempRow == row && tempCol ==col ){
//no need to check
} else if(queen(tempRow,tempCol) == 1 ) {
return true;
}
tempRow++;
tempCol++;
}
//algorithm to check right diagonal
if (row + col >= N-1) {
tempCol = N-1;
tempRow = (row + col) -(N-1)
} else {
tempRow = 0;
tempCol = row + col;
}
while (tempRow != N-1 && tempCol != 0) {
if (tempRow == row && tempCol ==col ) {
//no need to check
} else if(queen(tempRow,tempCol) == 1 ) {
return true;
}
tempRow++;
tempCol--;
}
return false;
}