metaphy 发表于 2013-1-27 05:32:14

八皇后问题

根据C程序改的Java的实现。以下为已知的N-皇后解数目。

public class Queens {private int[] queens = new int;//解数组private int[] colflag =new int;//列冲突标记private int[] flags1 = new int;//对角线冲突标记private int[] flags2 = new int;//对角线冲突标记private int roots ;private void trySet(int row){for (int column=0; column < 8; column++){if (colflag == 0 && flags1==0 && flags2==0 ){queens = column;if (row <7){colflag = 1;flags1= 1;flags2=1;trySet(row+1);}else{roots ++;printit();}colflag = 0;flags1 = 0;flags2 = 0;}}}private void printit(){System.out.println (roots);for (int i = 0;i<8; i++){for (int j =0 ;j<8; j ++){if (queens==j){System.out.print (" x");}else{System.out.print (" o");}}System.out.print("\n");}System.out.println("=================");}/** * @param args */public static void main(String[] args) {new Queens().trySet(0);}}

1 1   
2 0   
3 0   
4 2   
5 10   
6 4   
7 40   
8 92   
9 352   
10 724   
11 2680   
12 14200   
13 73712   
14 365596   
15 2279184   
16 14772512   
17 95815104   
18 666090624   
19 4968057848   
20 39029188884   
21 314666222712   
22 2691008701644   
23 24233937684440   
24 227514171973736   
25 2207893435808352
页: [1]
查看完整版本: 八皇后问题