Java-программа N Queens застряла в бесконечном цикле
Я делаю проблему N королев. Прямо сейчас я настроил доску так, чтобы все королевы были расположены по диагонали так:
Q * *
* Q *
* * Q
Программа работает, когда размер платы N равен 4 и 5. Но когда размер равен 6, кажется, что он застрял в бесконечном цикле.
public void solve(){
while(d2() + d1() != 0){
int a = (int)Math.floor((Math.random() * (gridSize - 1)) + 0);
int temp1 = d1() + d2();
for(int row = 0; row < gridSize; row++){
for(int col = 0; col < gridSize; col++) {
if(isQueen(row,col)){
swapRows(a,row);}
int temp2 = d1() + d2();
if(temp1 < temp2){
swapRows(row,a);}
}
}
}printSolution();}//end solve
D1 и D2 отслеживают количество диагональных столкновений. Я использовал Math.random(), чтобы создать случайный обмен между двумя строками и проверить, увеличивается или уменьшается количество столкновений. Любые идеи о том, почему мой метод застрял в бесконечном цикле, когда gridSize равен 6 или больше?
Спасибо