代码改变世界
    
    
    
    
    
        
            
            
    
    
    
2016-09-22 19:49 
FUNK 
阅读(208) 
评论() 
 
收藏 
举报
    
        
- public class Queen8 {  
 
-     public static int num = 0; 
 
-     public static final int MAXQUEEN = 8;
 
-     public static int[] cols = new int[MAXQUEEN]; 
 
-     public Queen8() {  
 
-        
 
-       getArrangement(0);  
 
-       System.out.print("/n");  
 
-       System.out.println(MAXQUEEN+"皇后问题有"+num+"种摆放方法。");  
 
-     }  
 
-       
 
-     public void  getArrangement(int n){  
 
-      
 
-      boolean[] rows = new boolean[MAXQUEEN];  
 
-      for(int i=0;i<n;i++){  
 
-         rows[cols[i]]=true;  
 
-         int d = n-i;  
 
-         if(cols[i]-d >= 0)rows[cols[i]-d]=true;  
 
-         if(cols[i]+d <= MAXQUEEN-1)rows[cols[i]+d]=true;   
 
-         
 
-      }  
 
-      for(int i=0;i<MAXQUEEN;i++){  
 
-        
 
-        if(rows[i])continue;  
 
-        
 
-        cols[n] = i;  
 
-        
 
-        if(n<MAXQUEEN-1){  
 
-          getArrangement(n+1);  
 
-        }else{  
 
-   
 
-         
 
-          num++;  
 
-          
 
-          printChessBoard();  
 
-        }   
 
-         
 
-         
 
-      }  
 
-        
 
-     }  
 
-     public void printChessBoard(){  
 
-          
 
-        System.out.print("第"+num+"种走法 /n");  
 
-          
 
-        for(int i=0;i<MAXQUEEN;i++){  
 
-          for(int j=0;j<MAXQUEEN;j++){  
 
-            if(i==cols[j]){  
 
-              System.out.print("0 ");  
 
-            }else  
 
-              System.out.print("+ ");  
 
-          }  
 
-          System.out.print("/n");  
 
-        }  
 
-          
 
-     }  
 
-     public static void main(String args[]){  
 
-       Queen8 queen = new Queen8();  
 
-     }  
 
-      
 
- }