分享

皇后问题

 shaobin0604@163.com 2006-08-29
  1. public class Queen {
  2.     private char[][] matrix;
  3.     private int size;
  4.     private int[] position;
  5.     private int result;
  6.  
  7.     public int getResult() {
  8.         return result;
  9.     }
  10.  
  11.     public Queen(int size) {
  12.         this.size = size;
  13.         matrix = new char[size][size];
  14.         for (int i = 0i < sizei++) {
  15.             for (int j = 0j < sizej++) {
  16.                 matrix[i][j] = x;
  17.             }
  18.         }
  19.         position = new int[size];
  20.     }
  21.  
  22.     private void printMatrix() {
  23.         System.out.printf("---- sulution %d ----\n"result);
  24.         for (int i = 0i < sizei++) {
  25.             System.out.print("{");
  26.             for (int j = 0j < size - 1j++)
  27.                 System.out.print(matrix[i][j] + " ");
  28.             System.out.print(matrix[i][size - 1]);
  29.             System.out.println("}");
  30.         }
  31.     }
  32.  
  33.     private boolean isValid(int rowint col) {
  34.         for (int i = 0i < rowi++) {
  35.             if (position[i] == position[row]) {
  36.                 return false;
  37.             }
  38.             if (Math.abs(position[i] - position[row]) == row - i) {
  39.                 return false;
  40.             }
  41.         }
  42.         return true;
  43.     }
  44.  
  45.     public void trial(int row) {
  46.         for (int i = 0i < sizei++) {
  47.             matrix[row][i] = .;
  48.             position[row] = i;
  49.             if (isValid(rowposition[row])) {
  50.                 if (row < size - 1) {
  51.                      trial(row + 1);
  52.                 } else {
  53.                     /* success */
  54.                     result++;
  55.                     printMatrix();
  56.                 }
  57.             } 
  58.             matrix[row][i] = x;
  59.         }
  60.     }
  61.  
  62.     public static void main(String[] args) {
  63.         Queen test = new Queen(4);
  64.         test.trial(0);
  65.         System.out.printf("result is: %d"test.getResult());
  66.     }
  67. }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多