2017年7月29日 星期六

(Java)八皇后

  1. /* 
  2.  *  
  3.  * 八皇后 運用遞迴 
  4.  *  
  5.  *  
  6.  */  
  7. public class Einght_Queen {  
  8.   int max = 8 ;  
  9.   int[] queens = new int[max];  
  10.   int an_count = 1;  
  11. public static void main(String[] args) {  
  12.   new  Einght_Queen().check(0);  
  13. }  
  14. public void check(int n){  
  15.  //都擺完皇后後 == max  就印出  
  16.  if(n == max){  
  17.   //輸出  
  18.   print();  
  19.   return ;  
  20.  }  
  21.  for(int pos = 0 ; pos < max ; pos++){  
  22.   queens[n] = pos ;//給位置  
  23.   if(judgment(n)) //假設找到位置 換下個皇后  
  24.     check(n+1);  
  25.  }  
  26. }  
  27. private void print() {  
  28.   System.out.println("-------"+an_count+"--------");    
  29.    for (int i = 0; i < queens.length; i++) {  
  30.           for (int j = 0; j < queens.length; j++) {  
  31.               if(queens[i] == j )  
  32.            System.out.print("♛"+" ");  
  33.               else  
  34.               System.out.print("♕"+" ");    
  35.           }  
  36.           System.out.println();   
  37.         }    
  38.    an_count++;   
  39.     }    
  40.   
  41. public boolean judgment(int n){  
  42.  for(int queen = 0 ; queen < n ; queen++ ){//跟每個皇后比 是否被吃掉     
  43.   if(queens[n] == queens[queen] || Math.abs(n-queen) == Math.abs(queens[n]-queens[queen]) ){  
  44.    return false ;  
  45.   }  
  46.  }  
  47.  return true ;//沒有,回傳true  
  48. }  
  49. }  

沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。