第一次看到这个问题,想了一个,不知道算什么类型的解法。
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,TimeCost: 9ms
12皇后,计算结果14200,TimeCost: 23ms
13皇后,计算结果73712,TimeCost: 124ms
14皇后,计算结果365596,TimeCost: 705ms
15皇后,计算结果2279184,TimeCost: 4004ms
16皇后,计算结果14772512,Time