알고리즘. Recusion(순환)-N Queens Problem
🌟 N Queens Problem
n개의 말을 두는데 그 말의 대각선, 행, 열에 다른 말들이 있으면 안되는 알고리즘이다!
🌟 코드
public class NQueensProblem {
  private final static int N = 8;
  private static int[] cols = new int[N + 1];
  public static void main(String[] args) {
    queens(0);
  }
  private static boolean queens(int level) {
    if (!promising(level))
      return false;
    else if (level == N) {
      for (int i = 1; i <= N; i++)
        System.out.println("(" + i + ", " + cols[i] + ")");
      return true;
    }
    for (int i = 1; i <= N; i++) {
      cols[level + 1] = i;
      if (queens(level + 1))
        return true;
    }
    return false;
  }
  private static boolean promising(int level) {
    for (int i = 1; i < level; i++) {
      if (cols[i] == cols[level])
        return false;
      else if ((level - i) == Math.abs(cols[level] - cols[i]))
        return false;
    }
    return true;
  }
}
 
      
    
댓글남기기