题解 | #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皇后#
全部评论

相关推荐

10-25 00:32
香梨想要offer:感觉考研以后好好学 后面能乱杀,目前这简历有点难
点赞 评论 收藏
分享
1 1 评论
分享
牛客网
牛客企业服务