PNP : Paralle N-queens puzzle

多机数据处理

PNP : Paralle N-queens puzzle

PNP : Paralle N-queens puzzle

  • 单机解决
  • 多线程
  • 多个机器
  • 负载均衡

N皇后问题:每一行只能有一个皇后,每一列只能有一个皇后,每一条对角线(反对角线)只能有一个皇后。求解的个数。

PNP : Paralle N-queens puzzle

一种解法:求全排列,然后去掉非法情况

PNP : Paralle N-queens puzzle

PNP : Paralle N-queens puzzle

代码简洁,但是效率低

回溯法

PNP : Paralle N-queens puzzle

回溯法,就是在失败点选择其他值进行试探,直到成功。

通过将错误情况,过早的减枝,可以排除掉很多非法情况。所以相对上面的全排列方法要快很多。

思路就是使用位数组,columns表示那些列被使用了,diagnoal表示对角被使用情况,antidiagnoal表示反对角被使用情况。

PNP : Paralle N-queens puzzle

其中__builtin_ctz为gcc 的builtin函数,用来获取尾部0的个数。