题解 | #N皇后问题#
N皇后问题
https://www.nowcoder.com/practice/c76408782512486d91eea181107293b6
import java.util.*; public class Solution { /** * * @param n int整型 the n * @return int整型 */ int max; //总共的皇后数 int[] array = new int [max]; int count=0; public int Nqueen (int n) { //n个皇后返回m种解法 // write code here array = new int[n]; max = n; //n皇后 place(0); //0表示从第一行开始 return count; } public boolean judge(int n ){ //需要放置的皇后和前面的已放置的进行判断 for (int i=0;i<n;i++){ //判断是否会同列或者在同斜线 if (array[i]==array[n]||Math.abs(n-i)==Math.abs(array[n]-array[i])){ return false; } } return true; } public void place(int n){ if (n==max){ //n个皇后走完第一次,进行回溯 count++; //计算解法此数 return; //递归结束条件 } for(int i=0;i<max;i++){ array[n] = i; //从第一列开始放 if(judge(n)){ //不冲突,进行下一个皇后的放置 place(n+1); } //运行到这里,说明放在第i列和前面的有冲突 ,下次直接i++ } } }#n皇后#