第一次看到这个问题,想了一个,不知道算什么类型的解法。
boolean[N][N]二维数组表示棋盘
queen[N]表示从左到右的N个皇后
(原来是单线程的)
传入一个棋盘,在第一列的有效位放入一个皇后,将该位置boolean[X][Y]置反,
移动到第二列,计算该列的有效位,将棋盘上这一列的boolean[N]数组的无效位进行置反,
在第二列的有效位放入一个皇后,将该位置boolean[X][Y]置反,
。。。
重复直到:
无有效位{
回到上一列;
}
或者成功{
计数+1;
回到上一列
},
后来发现单线程太慢了,就暴力改成了多线程
很简单,棋盘的第一列只留一个有效位,变成残缺棋盘,让N个线程解N个残缺棋盘,暴力吧
成绩:
8皇后,计算结果92,TimeCost: 3ms
9皇后,计算结果352,TimeCost: 4ms
10皇后,计算结果724,TimeCost: 13ms
11皇后,计算结果2680,Tim