public class NQueue {public static void main(String[] args) {int n = 8;//int limit = n == 32 ? -1 :(1<<n)-1;System.out.println(num2(n));}public static int num2(int n){if(n < 1 || n>32){return 0;}// 1<<n: 1向左移动n位, 这样1后面有n个零,然后减去1,这样最右边就有n个1int limit = n == 32 ? -1 :(1<<n)-1;return process2(limit, 0,0,0);}public static int process2(int limit,int colLim,int leftDiaLim,int rightDiaLim){if(limit == colLim){return 1;}int pos = limit & (~(colLim | leftDiaLim | rightDiaLim));int mostRightOne = 0;int res = 0;while(pos != 0){mostRightOne = pos & (~pos + 1);pos = pos-mostRightOne;int nColLim = colLim+mostRightOne;int nLeftDiaLim = (leftDiaLim+mostRightOne)<<1;   // 左移1位int nRightDiaLim = (rightDiaLim+mostRightOne)>>1; // 右移1位res += process2(limit, nColLim,nLeftDiaLim,nRightDiaLim);}return res;}
}

n皇后问题,使用位运算解决相关推荐

  1. 利用位运算解决 N 皇后问题

    题目: LeetCode 51. N-Queens 分析: N 皇后问题是考查递归回溯的经典问题,深度优先搜索的难点在于如何剪枝,在这个问题里面的剪枝,我们需要利用额外的空间去记录当前行的有效空位,只 ...

  2. 八皇后 深度优先 广度优先 位运算

    对于八皇后问题,大家应该都不陌生,只要接触过算法的,必然都会接触到这到题.对于八皇后的问题不在此叙述,可以直接百度.对于八皇后问题的解决思路,可以直接根据题目的要求便可以得到. 总的来说,就是下一个皇 ...

  3. 位运算解决二进制位上不同数字的个数问题

    文章目录 题目 思路 AC代码 题目 思路 在oj上遇到的一道题.因为位运算基本不会,所以记录一下. 这题采取异或运算即 ^ 这个运算符号. 它的意思是如果二进制位上的两个数是相同的那么数字是0,如果 ...

  4. N皇后问题的位运算求解——目前最快的方法

    核心代码如下: 1 void test(int row, int ld, int rd) 2 { 3 int pos, p; 4 if ( row != upperlim ) 5 { 6 pos = ...

  5. usaco Section 1.5 Checker Challenge 最慢0.162秒0.0+n皇后问题位运算版(C语言)

    今天做USACO做到Section 1.5的Checker Challenge 直接dfs之后的结果是,超时.. 百度查查才想起来就是八皇后问题.有人讲怎么利用对称性怎么怎么优化,我没仔细看 直到看到 ...

  6. JavaScript 位运算总结拾遗

    最近补充了一些位运算的知识,深感位运算的博大精深,此文作为这个系列的总结篇,在此回顾下所学的位运算知识和应用,同时也补充下前文中没有提到的一些位运算知识. 把一个数变为大于等于该数的最小的2的幂 一个 ...

  7. HYSBZ(BZOJ) 4300 绝世好题(位运算,递推)

    HYSBZ(BZOJ) 4300 绝世好题(位运算,递推) Description 给定一个长度为n的数列ai,求ai的子序列bi的最长长度,满足bi&bi-1!=0(2<=i<= ...

  8. 更新后的哥德巴赫猜想(位运算)

    哥德巴赫猜想:一个不小于6的偶数,总能分解成两个质数之和. #include(stdio.h) #include(math.h) boolean   isPrime(int  num); boolea ...

  9. Python_Task01:变量、运算符、数据类型及位运算

    变量.运算符.数据类型及位运算 学习教程 变量.运算符.数据类型 1. 注释 2. 运算符 3. 变量和赋值 4. 数据类型与转换 5. print() 函数 思考题 练习题 位运算 1.原码.反码和 ...

最新文章

  1. 云计算的下一站:Serverless的2020发展前瞻!
  2. Java相对路径读取文件
  3. Spark详解(九):Spark存储原理分析
  4. appium java版本错误_java – 无法创建新会话. appium代码中的错误
  5. 5款内容超赞的微信小程序,每一个都是深藏!
  6. 路由器下一跳地址怎么判断_三分钟了解路由器路由表
  7. 设置透明背景和转换图片格式的技巧
  8. 批处理从入门到精通_DOS/BAT
  9. 华为设置android系统提醒功能,华为手机短信不提醒怎么办?华为手机短信提醒设置方法...
  10. 传统网络变压器和电容试片式性能区别
  11. iftop输出详解和命令详解
  12. 【Geant4和MCNP学习】基于项目从软件建模差异入手深入对两款软件的了解
  13. 电子商务-任务分配背景会议
  14. 假如易立竞吐槽程序员。。。
  15. M1 Mac安装PostgreSQL
  16. java B2B2C源码电子商务平台-配置中心svn示例和refresh
  17. CatDriver 小米 猫盘 Boot Info
  18. WordPress美女写真源码 带搭建和采集教程
  19. JAVA计算机毕业设计茶店订购管理系统计算机(附源码、数据库)
  20. 【macOS游戏】Gear.Club Stradale赛车游戏

热门文章

  1. 《程序是怎样跑起来的》第一章读后感
  2. 小白的.Net Core 2.0 ConsoleApp入门(keng)指南(一)
  3. requestAnimationFrame
  4. Linux 下安装redis
  5. 【转】浅析C语言的非局部跳转:setjmp和longjmp
  6. Maven实战系列文章目录
  7. Java对象引用与对象的区别
  8. 迭代器、生成器、装饰器
  9. hicharts Linux服务器导出,中文字体问题
  10. 【转】请尊重测试:测试从业五年有感