Решая проблему 8 королев, я фактически застрял в том, как получить доступ к диагонали конкретной ячейки, чтобы установить ее в 1 при размещении ферзя. Существует простая логика для ячеек, которые находятся по вертикали или горизонтали от выбранной ячейки, где должна быть размещена королева.
Вот код моей функции для установки ячеек для ферзя в 1, на которые эта королева может атаковать.
static int[][] SetPos(int csp[][],int row,int col){
int count = 0, n = csp.length;
for (int i = 0; i < csp.length; i++) {
for (int j = 0; j < csp.length; j++) {
if(i==row || j==col){
csp[i][j]=1;
}
if(row==col && i==j){
//csp[row][col]=1;
csp[i][j]=1;
}
if(row+count==i && col+count==j){
csp[i][j]=1;
}
}
count++;
}
return csp;
}
Как можно улучшить это состояние:
if(row+count==i && col+count==j){
csp[i][j]=1;
}
Чтобы я получил результат для ячейки (5,5) как:
1 0 0 0 0 1 0 0
0 1 0 0 0 1 0 0
0 0 1 0 0 1 0 0
0 0 0 1 0 1 0 1
0 0 0 0 1 1 1 0
1 1 1 1 1 1 1 1
0 0 0 0 1 1 1 0
0 0 0 1 0 1 0 1
не так:
1 0 0 0 0 1 0 0
0 1 0 0 0 1 0 0
0 0 1 0 0 1 0 0
0 0 0 1 0 1 0 0
0 0 0 0 1 1 0 0
1 1 1 1 1 1 1 1
0 0 0 0 0 1 1 0
0 0 0 0 0 1 0 1
В настоящее время не стоит беспокоиться о возвращении.