Если решение на Си от 2003 года, которое в
77 раз быстрее приведенного решения на java, еще интересно, то оно в аттаче
Было найдено в google за пару секунд, скомпилировано gcc и протестировано под Windows XP. Вот результаты:
java version
>java -server -version
java version "1.6.0_17"
Java(TM) SE Runtime Environment (build 1.6.0_17-b04)
Java HotSpot(TM) Server VM (build 14.3-b01, mixed mode)
>java -server -Xmx1200m EightQueens 16
16 queens.
Started at:Wed Jul 28 12:23:01 CEST 2010
Finished at:Wed Jul 28 12:27:35 CEST 2010, after 274547 ms.
1846955 solutions found.
c version
>gcc --version
gcc (GCC) 3.4.2 (mingw-special)
Copyright © 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
>nqueens 16
<------ N-Queens Solutions -----> <---- time ---->
N: Total Unique days hh:mm:ss.--
2: 0 0 0.00
3: 0 0 0.00
4: 2 1 0.00
5: 10 2 0.00
6: 4 1 0.00
7: 40 6 0.00
8: 92 12 0.00
9: 352 46 0.00
10: 724 92 0.00
11: 2680 341 0.00
12: 14200 1787 0.00
13: 73712 9233 0.01
14: 365596 45752 0.08
15: 2279184 285053 0.55
16: 14772512 1846955 3.55 (77 times faster !!!)
17: 95815104 11977939 24.42
18: 666090624 83263591 2:58.38
PS. В аттаче есть еще один вариант на java, который в 5.5 раз быстрее оригинальной версии.
PPS. Тут решают эту задачку на GPU за пол-секунды и явно не на java
Running on GeForce GTX 285:
16 (gpu): 1.09s
-local 16 (gpu):
0.5s