n皇后问题,使用位运算解决
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皇后问题,使用位运算解决相关推荐
- 利用位运算解决 N 皇后问题
题目: LeetCode 51. N-Queens 分析: N 皇后问题是考查递归回溯的经典问题,深度优先搜索的难点在于如何剪枝,在这个问题里面的剪枝,我们需要利用额外的空间去记录当前行的有效空位,只 ...
- 八皇后 深度优先 广度优先 位运算
对于八皇后问题,大家应该都不陌生,只要接触过算法的,必然都会接触到这到题.对于八皇后的问题不在此叙述,可以直接百度.对于八皇后问题的解决思路,可以直接根据题目的要求便可以得到. 总的来说,就是下一个皇 ...
- 位运算解决二进制位上不同数字的个数问题
文章目录 题目 思路 AC代码 题目 思路 在oj上遇到的一道题.因为位运算基本不会,所以记录一下. 这题采取异或运算即 ^ 这个运算符号. 它的意思是如果二进制位上的两个数是相同的那么数字是0,如果 ...
- N皇后问题的位运算求解——目前最快的方法
核心代码如下: 1 void test(int row, int ld, int rd) 2 { 3 int pos, p; 4 if ( row != upperlim ) 5 { 6 pos = ...
- usaco Section 1.5 Checker Challenge 最慢0.162秒0.0+n皇后问题位运算版(C语言)
今天做USACO做到Section 1.5的Checker Challenge 直接dfs之后的结果是,超时.. 百度查查才想起来就是八皇后问题.有人讲怎么利用对称性怎么怎么优化,我没仔细看 直到看到 ...
- JavaScript 位运算总结拾遗
最近补充了一些位运算的知识,深感位运算的博大精深,此文作为这个系列的总结篇,在此回顾下所学的位运算知识和应用,同时也补充下前文中没有提到的一些位运算知识. 把一个数变为大于等于该数的最小的2的幂 一个 ...
- HYSBZ(BZOJ) 4300 绝世好题(位运算,递推)
HYSBZ(BZOJ) 4300 绝世好题(位运算,递推) Description 给定一个长度为n的数列ai,求ai的子序列bi的最长长度,满足bi&bi-1!=0(2<=i<= ...
- 更新后的哥德巴赫猜想(位运算)
哥德巴赫猜想:一个不小于6的偶数,总能分解成两个质数之和. #include(stdio.h) #include(math.h) boolean isPrime(int num); boolea ...
- Python_Task01:变量、运算符、数据类型及位运算
变量.运算符.数据类型及位运算 学习教程 变量.运算符.数据类型 1. 注释 2. 运算符 3. 变量和赋值 4. 数据类型与转换 5. print() 函数 思考题 练习题 位运算 1.原码.反码和 ...
最新文章
- 云计算的下一站:Serverless的2020发展前瞻!
- Java相对路径读取文件
- Spark详解(九):Spark存储原理分析
- appium java版本错误_java – 无法创建新会话. appium代码中的错误
- 5款内容超赞的微信小程序,每一个都是深藏!
- 路由器下一跳地址怎么判断_三分钟了解路由器路由表
- 设置透明背景和转换图片格式的技巧
- 批处理从入门到精通_DOS/BAT
- 华为设置android系统提醒功能,华为手机短信不提醒怎么办?华为手机短信提醒设置方法...
- 传统网络变压器和电容试片式性能区别
- iftop输出详解和命令详解
- 【Geant4和MCNP学习】基于项目从软件建模差异入手深入对两款软件的了解
- 电子商务-任务分配背景会议
- 假如易立竞吐槽程序员。。。
- M1 Mac安装PostgreSQL
- java B2B2C源码电子商务平台-配置中心svn示例和refresh
- CatDriver 小米 猫盘 Boot Info
- WordPress美女写真源码 带搭建和采集教程
- JAVA计算机毕业设计茶店订购管理系统计算机(附源码、数据库)
- 【macOS游戏】Gear.Club Stradale赛车游戏