N Queens Java程序陷入无限循环

时间:2015-10-25 13:53:02

标签: java multidimensional-array while-loop infinite-loop 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或更大时陷入无限循环的任何想法?

由于

0 个答案:

没有答案