PNP : Paralle N-queens puzzle
多机数据处理
- 单机解决
- 多线程
- 多个机器
- 负载均衡
N皇后问题:每一行只能有一个皇后,每一列只能有一个皇后,每一条对角线(反对角线)只能有一个皇后。求解的个数。
一种解法:求全排列,然后去掉非法情况
代码简洁,但是效率低
回溯法
回溯法,就是在失败点选择其他值进行试探,直到成功。
通过将错误情况,过早的减枝,可以排除掉很多非法情况。所以相对上面的全排列方法要快很多。
思路就是使用位数组,columns表示那些列被使用了,diagnoal表示对角被使用情况,antidiagnoal表示反对角被使用情况。
其中__builtin_ctz为gcc 的builtin函数,用来获取尾部0的个数。