n-queens程序

brjng4g3  于 2021-07-06  发布在  Java
关注(0)|答案(0)|浏览(109)

我做了很多研究,但都不是递归的,就是不是我现在要找的。我正在尝试使用linkedstack而不是递归创建一个n-queens程序,linkedstack将接受object nqueen,而不仅仅是一堆整数。这是我第一次这样做,虽然我了解算法,但我只是不知道如何实现它。比如我如何将一个皇后与堆栈中的最后一个皇后进行比较,以及它们如何存储适合两个皇后不互相攻击的位置。我很迷茫,如果可能的话,一些代码如何实现它将是伟大的。

public class NQueen {
   private static int numSolutions;
   private int col;
   private int row;

   public int getCol()
   {
      return col;
   }

   public int getRow()
   {
      return row;
   }

   public void setCol(int num){
      col= num;
   }

   public void setRow(int num) {
      row= num;
   }

   public NQueen(int newRow, int newColumn) {
      this.row = newRow;
      this.col = newColumn;

   }

   public void solve(NQueen Queen, int n ) {
      int current =0;
      LinkedStack<Object> stack = new LinkedStack<>();
      stack.push(Queen);
      while(true) {
         while(current < n) {

         }

      }

   }
   public boolean conflict(NQueen Queen) {
      for(int i= 0; i < stack.size(); i++) {

      }

         //Check if same column or same diagonal

      return true;
   }     

}

这是我在linkedstack中实现的returnitemat(int n)。谢谢你的帮助。

/**
   *
   * @precondition 
   *   0 <= n and n < size( ).
   * @postcondition
   *   The return value is the item that is n from the top (with the top at
   *   n = 0, the next at n = 1, and so on). The stack is not changed
   *  
 **/

   public Object itemAt(int n) {
      int index = n;  
      if ((n<0) && (n >= size())) { 
         throw new EmptyStackException();
      }
      int i = 0; 
      while (i < n) {
         this.pop();
         i++;
      }
      this.peek();
      return peek();
  }

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题