题解 | #N皇后问题#

N皇后问题

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

难点:需要考虑皇后位置冲突的情况,使用‘位运算’记录不能放置皇后的位置,之后将穷举可以放置皇后的位置,当迭代到最后一行时,说明找到了一种放置皇后的方式

import java.util.*;


public class Solution {
    /**
     * 
     * @param n int整型 the n
     * @return int整型
     */
    int res = 0;
    public int Nqueen (int n) {
        // write code here
        if(n<=0) return res;
//         //初始化每一行皇后的位置
//         int[] reme = new int[n];
//         Arrays.fill(reme,-1);
        
        dfs(0,0,0,0,n);
        return res;   
    }
    
    void dfs(int column,int bitst1,int bitst2,int cow,int n){
        if(cow==n){
            res++;
            return;
        }
        //获得当期总共能够选择放置皇后的位置
        int availableposition = ((1<<n)-1) & (~(column|bitst1|bitst2));
        while(availableposition!=0){
            //获取当前操作位置
            int position = availableposition&(-availableposition);
            
            //更新剩余的可选位置
            availableposition &= (availableposition-1);
            dfs(column|position,(bitst1|position)>>1,(bitst2|position)<<1,cow+1,n);
            
        }
        
    }
    
    
}
全部评论

相关推荐

程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
牛至超人:哈工大已经很棒了,不需要加括号了,然后咋没有实习经历呢?火速趁寒假整一段实习,导师不让就狠狠肘击
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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