题解 | #N皇后问题#

N皇后问题

http://www.nowcoder.com/practice/c76408782512486d91eea181107293b6

import java.util.*;


public class Solution {
    /**
     *
     * @param n int整型 the n
     * @return int整型
     */
    private int res= 0;
    public int Nqueen (int n) {
        // write code here
        //下标为行,值为列
        int[] pos = new int[n];
        //初始化
        Arrays.fill(pos,-1);
        find(n,0,pos);
        return res;
    }
    //回溯算法
    public void find(int n,int row,int[] pos){
        if(row == n){
            res++;
            return;
        }
        for(int i = 0;i<n;i++){
            if(isValid(pos,row,i)){
                pos[row] = i;
                find(n,row+1,pos);
                pos[row] = -1;
            }
        }
    }
    //判断前row行与本行是否同列或者同一斜线
    public boolean isValid(int[] pos,int row,int col){
        for(int i = 0;i<row;i++){
            if(col == pos[i]||Math.abs(col-pos[i])==Math.abs(row-i)){
                return false;
            }
        }
        return true;
    }
}
全部评论

相关推荐

半解316:内容充实,细节需要修改一下。 1,整体压缩为一页。所有内容顶格。 2,项目描述删除,直接写个人工作量 修改完之后还需要建议,可以私聊
点赞 评论 收藏
分享
机械打工仔:我来告诉你原因,是因为sobb有在线简历,有些HR为了快会直接先看在线简历,初步感觉不合适就不会找你要详细的了
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务