八皇后问题 java
在棋盘上放置8个皇后,使他们互不攻击,此时每个皇后的 攻击范围为 同行 同列 同对角线 要求找出所有解 恰好每行每列放置一个皇后 如果用C[x]表示第x行皇后的列号,就成为了一个全排列问题 static int ans ; static int n ; static int [ ] C ; public static void main ( String [ ] args ) { Scanner sc = new Scanner ( System . in ) ; n = sc . nextInt ( ) ; C = new int [ n ] ; f ( 0 ) ; System . out . println ( ans ) ; } static void f ( int cur ) { if ( cur == n ) ans ++ ; else for ( int i = 0 ; i < n ; i ++ ) { int ok = 1 ; C [ cur ] = i ; for ( int j = 0 ; j < cur ; j ++ ) { //检查是否和前面的皇后冲突 //判断是否跟前面的皇后在同一列或者对角线 // 因为数组下标就是行号,所以不会在同一行 if ( C [ cur ] == C [ j ] || cur + C [ cur ] == j + C [ j