10

我一直在研究 8 个皇后问题,但我被卡住了。我不想要代码。我希望得到指导和指导,以便了解如何使用回溯递归自己解决这个问题。

该程序应该通过在 ASCII 中绘制皇后的位置来枚举 N 皇后问题的所有解决方案,就像这里的两个解决方案一样。

到目前为止,我的伪代码是:

void queen(int n){

   for( int i = 0; i < n; i++){

       place queen[ i ] on row i;

       for(int j = 0 ; j < n ; j++){
               if( queen[ i ] is not in the same column as queen[0] through queen[ i - 1 ]  &&
                   queen[ i ] is not on the same major diagonal with queen[0] through queen[ i -1 ]  &&
                   queen[ i ] is not on the same minor diagonal with queen[0] through queen[ i -1 ]  ) {
                              print 'Q ';
                   }
               else{
                              print '* ';
                   }

               System.out.println();
         }

         System.out.println();

  }

}

我的伪代码中没有任何回溯递归,因为我不知道该怎么做。

非常感谢任何帮助。请不要代码。

(响应 Nemo 的更新):

solver(int n, Board b){
    for(int i = 0; i < b.length; i++){
       place queen in column i;
       for(int j = 0; j < b.length; j++){
           change b;
           solver(n+1,changed b); 
       }
    }
}

这是正确的吗?

(更新 2):

 solver8(board /* with queens presented in first 7 columns */){
    // place a queen in the 8th column;
    for(each possible placement of the queen in column 8 
        or in other words int i = 0; i < board.length; i++ ){
             place the queen and print the board
    }
}


 solver7(board /* with queens presented in first 6 columns */){
    // place a queen in the 7th column;
    for(each possible placement of the queen in column 7 
        or in other words int i = 0; i < board.length; i++ ){
             solver8(board with queens placed in first 7 columns);
    }
}


 solver6(board /* with queens presented in first 5 columns */ ){
    // place a queen in the 6th column;
    for(each possible placement of the queen in column 6 
        or in other words int i = 0; i < board.length; i++ ){
             solver7(board with queens presented in first 6 columns);
    }
}

依此类推,直到

 solver1(1, empty board){
     for(int i = 0; i < board.length; i++){
        place queen in row[i] of column 1;
        solver2(board with queen in row[i] of column 1);
      }
}

更新 3(已编辑):

private int numberOfQueens = 8;
solver(int n, Board b){

        for(int r = 0; r < b.length; r++){

               place queen in row[r] of column[n];

               if(n == numberOfQueens){
                    print the board;
                    return;
                }
                else{
                    solver(n+1, board with queen in row[r] of column[n]);
                }
           }
     }
}
4

5 回答 5

8

对这类问题使用递归的目的是让你可以这样思考“我现在已经放置了k个皇后;如果皇后的总数为n,我该如何放置剩余的皇后?” 所以递归函数应该有两个参数:目标皇后数,和到目前为止放置的皇后数。在编写函数时,您的首要目标是尝试不同的方式来放置第k个皇后。但是当您选择了一个可能的放置并发现它是有效的时,您需要放置剩余的n - k - 1 个皇后。我们应该怎么做?答案:递归!使用参数k - 1调用函数(从自身内部)表示您要放置剩余的k - 1 个皇后。每当您用尽所有可能性(或发现不可能)时,只需从函数返回 - 然后您将返回到前一个函数调用(例如,试图放置第k个皇后的那个)。

编辑:您还需要创建一个二维数组来表示板的当前状态;这个数组必须要么作为附加参数发送给递归函数,要么作为包含该方法的类的字段保存。

至于回溯,只需确保用k + 1调用的函数在返回之前从棋盘上删除第k + 1个皇后即可;这实质上是说“我们现在(不成功)尝试了所有放置剩余皇后的方法 -基于已经放置的 k 个皇后的位置。没有一个成功,所以请调整前 k 个皇后的位置皇后区(这将由使用k调用的函数以及调用该函数的函数完成,依此类推),然后再试一次。”

于 2011-06-14T00:18:26.373 回答
4

一般来说,递归回溯搜索看起来像这样:

// On input, s represents a valid State up to depth d-1
sub do_it(int d, State s)
    if (d == MAX_DEPTH+1)
        // State s represents an answer!  Print it and return.
    else
        (augment s to make it valid for depth d)
        for each augmented_s
            do_it(d+1, augmented_s)
        end for
    end if
end sub

// top level
do_it(0, empty_state)

请注意,对于给定s的深度有效d-1,可能有多种方法可以将其扩充到深度有效的状态d。这个想法是用他们每个人打电话给你自己。

对于这个问题,“状态”就是董事会。深度“d-1”可能意味着填充了前 d-1 列。合法的增强状态将是那些在 d 列中有女王的国家,这样她就不会被俘虏。

[更新]

这是另一种看待它的方式。倒过来解决问题。

假设我请您编写一个名为solver8(). 该函数将前 7 列中已经存在皇后的棋盘作为输入。它所要做的就是拿走那个棋盘,想办法在第 8 列添加一个皇后,然后打印出这些棋盘。你认为你可以编写这个函数吗?好的; 写下来。

现在假设我要求你编写一个几乎一样简单的函数,称为solver7(). 该函数将前 6 列中已经存在皇后的棋盘作为输入。它所要做的就是拿到那个棋盘,找到所有方法在第 7 列添加一个皇后,然后将每个棋盘作为参数传递给solver8(). 你能写出这个函数吗?

现在假设我要求你编写另一个名为solver6(). 作为输入,它需要一个棋盘,前 5 列中有皇后。它所要做的就是拿下那个棋盘,找到所有方法在第 6 列添加一个皇后,然后将每个棋盘传递给solver7().

依此类推,直到我们到达solver1(). 这个人拿了一个空棋盘,想方设法在第一列放置一个皇后,然后将每个棋盘传递给solver2()

您刚刚编写了 8 个函数来共同解决 8 个皇后问题。如果这没有意义,请将其写成 8 个函数并盯着它看,直到你这样做为止。

现在,如果您查看所有这些功能,您会发现它们非常相似。因此,您无需编写solver8、solver7、solver6、...、solver1,而是编写一个函数:

solver(int n, Board b)

...这样solver(1, b) 与solver1(b) 相同,solver(2, b) 与solver2(b) 相同,...,solver(8, b) 与solver(8, b) 相同求解器8(b)。而不是solver2(...)调用solver3(...),例如,你只会让solver(2, ...)调用solver(3, ...)。一个功能而不是 8 个,但做同样的事情。

solver9()如果你从一个只需要一个完全填充的板并将其打印出来并solver8()调用它的代码开始,你很快就会发现最终的代码更干净。

于 2011-06-14T00:34:46.907 回答
3

在这里看到这个漂亮的动画8 queen's problem using recursion.

另外,请查看:8 queens problem - Java/C++

看看logic这里的解释。

于 2011-06-14T00:11:01.570 回答
0

将第一个皇后放在 [0][0] 中,然后为第二个皇后找到一个位置。假设您找到了一个到下一个,依此类推。假设您的第 5 个皇后不能放置在第 5 列或第 5 行的任何位置(无论您跟随哪个)。回到 4 号并找到另一个位置。比去第 5 次。假设你在第 8 次并且没有可用的位置。到第 7 楼,那里仍然没有任何东西。您将继续返回到第 2 次,然后再次找到第 2 次的位置,然后前往第 3 次。是否有意义...

于 2011-06-14T00:18:37.733 回答
0

希望这个解决方案有帮助

要点是

1.递归简单到下

2. IsValid position 2.1 cross Queen 在同一列中找到,如

*
*

2.2 交叉皇后发现对角线像

*--
---
--*

或者

--*
---
*--

代码 :

package queenproblem;

public class QueenProblem
    {
        int numQueens[];// hold columns postion
        int numQueen;

        QueenProblem(int noOfQueens) {
            this.numQueen = noOfQueens;
            numQueens = new int[noOfQueens];

        }

        public static void main(String[] args) {
            new QueenProblem(8).solveProblem();

        }

        public void solveProblem() {
            arrange(0);
        }

        // recursive Function
        void arrange(int rowIndex) {
            // 1.to check valid Postion of not.
            // 2. to check all Queens postion is found or not.
            for (int i = 0; i < numQueen; i++)
            {
                if (isValid(rowIndex, i))
                {
                    numQueens[rowIndex] = i;// save col index

                    if (rowIndex == numQueen - 1)
                    {
                        printsBoard();
                    } else
                    {
                        arrange(rowIndex + 1);

                    }

                }
            }

        }

        private void printsBoard() {
            for (int i = 0; i < numQueen; i++)
            {
                for (int j = 0; j < numQueen; j++)
                {
                    if (numQueens[i] == j)
                    {
                        System.out.print(" * ");
                    } else System.out.print(" - ");
                }
                System.out.println();
            }
            System.out.println();

        }

        boolean isValid(int rowIndex, int colIndex) {

            for (int i = 0; i < rowIndex; i++)
            {
                // on the save columns
                if (numQueens[i] == colIndex) return false;

                if ((i - rowIndex) == (numQueens[i] - colIndex)) return false;
                if ((i - rowIndex) == (colIndex - numQueens[i])) return false;

            }

            return true;
        }
    }

8皇后问题的92种可能解决方案:

 *  -  -  -  -  -  -  - 
 -  -  -  -  *  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  -  -  *  -  - 
 -  -  *  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  *  -  -  -  -  -  - 
 -  -  -  *  -  -  -  - 

 *  -  -  -  -  -  -  - 
 -  -  -  -  -  *  -  - 
 -  -  -  -  -  -  -  * 
 -  -  *  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  -  -  *  -  -  -  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  *  -  -  - 

 *  -  -  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  -  -  *  -  -  -  - 
 -  -  -  -  -  *  -  - 
 -  -  -  -  -  -  -  * 
 -  *  -  -  -  -  -  - 
 -  -  -  -  *  -  -  - 
 -  -  *  -  -  -  -  - 

 *  -  -  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  -  -  -  *  -  -  - 
 -  -  -  -  -  -  -  * 
 -  *  -  -  -  -  -  - 
 -  -  -  *  -  -  -  - 
 -  -  -  -  -  *  -  - 
 -  -  *  -  -  -  -  - 

 -  *  -  -  -  -  -  - 
 -  -  -  *  -  -  -  - 
 -  -  -  -  -  *  -  - 
 -  -  -  -  -  -  -  * 
 -  -  *  -  -  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  -  -  -  *  -  -  - 

 -  *  -  -  -  -  -  - 
 -  -  -  -  *  -  -  - 
 -  -  -  -  -  -  *  - 
 *  -  -  -  -  -  -  - 
 -  -  *  -  -  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  -  -  *  -  - 
 -  -  -  *  -  -  -  - 

 -  *  -  -  -  -  -  - 
 -  -  -  -  *  -  -  - 
 -  -  -  -  -  -  *  - 
 -  -  -  *  -  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  -  -  *  -  - 
 -  -  *  -  -  -  -  - 

 -  *  -  -  -  -  -  - 
 -  -  -  -  -  *  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  -  -  *  -  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  *  -  -  -  -  - 
 -  -  -  -  *  -  -  - 

 -  *  -  -  -  -  -  - 
 -  -  -  -  -  *  -  - 
 -  -  -  -  -  -  -  * 
 -  -  *  -  -  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  *  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  -  -  -  *  -  -  - 

 -  *  -  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  -  *  -  -  -  -  - 
 -  -  -  -  -  *  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  -  *  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  *  -  -  -  - 

 -  *  -  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  -  -  -  *  -  -  - 
 -  -  -  -  -  -  -  * 
 *  -  -  -  -  -  -  - 
 -  -  -  *  -  -  -  - 
 -  -  -  -  -  *  -  - 
 -  -  *  -  -  -  -  - 

 -  *  -  -  -  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  -  -  *  -  - 
 *  -  -  -  -  -  -  - 
 -  -  *  -  -  -  -  - 
 -  -  -  -  *  -  -  - 
 -  -  -  -  -  -  *  - 
 -  -  -  *  -  -  -  - 

 -  -  *  -  -  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  -  -  -  *  -  -  - 
 -  -  -  -  -  -  -  * 
 -  *  -  -  -  -  -  - 
 -  -  -  *  -  -  -  - 
 -  -  -  -  -  *  -  - 

 -  -  *  -  -  -  -  - 
 -  -  -  -  *  -  -  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  -  -  * 
 *  -  -  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  -  -  *  -  -  -  - 
 -  -  -  -  -  *  -  - 

 -  -  *  -  -  -  -  - 
 -  -  -  -  *  -  -  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  -  -  *  -  - 
 -  -  -  *  -  -  -  - 
 -  -  -  -  -  -  *  - 
 *  -  -  -  -  -  -  - 

 -  -  *  -  -  -  -  - 
 -  -  -  -  *  -  -  - 
 -  -  -  -  -  -  *  - 
 *  -  -  -  -  -  -  - 
 -  -  -  *  -  -  -  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  -  -  *  -  - 

 -  -  *  -  -  -  -  - 
 -  -  -  -  *  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  *  -  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  *  -  - 

 -  -  *  -  -  -  -  - 
 -  -  -  -  -  *  -  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  *  -  -  - 
 -  -  -  -  -  -  -  * 
 *  -  -  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  -  -  *  -  -  -  - 

 -  -  *  -  -  -  -  - 
 -  -  -  -  -  *  -  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 *  -  -  -  -  -  -  - 
 -  -  -  *  -  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  -  *  -  -  - 

 -  -  *  -  -  -  -  - 
 -  -  -  -  -  *  -  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  -  -  -  *  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  *  -  -  -  - 

 -  -  *  -  -  -  -  - 
 -  -  -  -  -  *  -  - 
 -  -  -  *  -  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  -  *  -  -  - 
 -  -  -  -  -  -  *  - 
 -  *  -  -  -  -  -  - 

 -  -  *  -  -  -  -  - 
 -  -  -  -  -  *  -  - 
 -  -  -  *  -  -  -  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  -  *  -  -  - 
 -  -  -  -  -  -  *  - 
 *  -  -  -  -  -  -  - 

 -  -  *  -  -  -  -  - 
 -  -  -  -  -  *  -  - 
 -  -  -  -  -  -  -  * 
 *  -  -  -  -  -  -  - 
 -  -  -  *  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  -  -  -  *  -  -  - 
 -  *  -  -  -  -  -  - 

 -  -  *  -  -  -  -  - 
 -  -  -  -  -  *  -  - 
 -  -  -  -  -  -  -  * 
 *  -  -  -  -  -  -  - 
 -  -  -  -  *  -  -  - 
 -  -  -  -  -  -  *  - 
 -  *  -  -  -  -  -  - 
 -  -  -  *  -  -  -  - 

 -  -  *  -  -  -  -  - 
 -  -  -  -  -  *  -  - 
 -  -  -  -  -  -  -  * 
 -  *  -  -  -  -  -  - 
 -  -  -  *  -  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  -  -  -  *  -  -  - 

 -  -  *  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  -  *  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  *  -  -  -  - 
 -  -  -  -  -  *  -  - 

 -  -  *  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  -  -  *  -  - 
 -  -  -  *  -  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  -  *  -  -  - 

 -  -  *  -  -  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  *  -  -  -  - 
 -  -  -  -  -  -  *  - 
 *  -  -  -  -  -  -  - 
 -  -  -  -  -  *  -  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  *  -  -  - 

 -  -  -  *  -  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  -  *  -  -  - 
 -  -  -  -  -  -  -  * 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  -  *  -  -  -  -  - 
 -  -  -  -  -  *  -  - 

 -  -  -  *  -  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  -  *  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  -  -  *  -  - 
 -  -  *  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  *  -  -  -  -  -  - 

 -  -  -  *  -  -  -  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  *  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  -  -  *  -  - 
 *  -  -  -  -  -  -  - 
 -  -  *  -  -  -  -  - 
 -  -  -  -  -  -  *  - 

 -  -  -  *  -  -  -  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  -  *  -  -  -  -  - 
 -  -  -  -  -  *  -  - 
 -  -  -  -  -  -  -  * 
 *  -  -  -  -  -  -  - 
 -  -  -  -  *  -  -  - 

 -  -  -  *  -  -  -  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  -  *  -  -  -  -  - 
 -  -  -  -  -  *  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  -  *  -  -  - 
 *  -  -  -  -  -  -  - 

 -  -  -  *  -  -  -  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  -  -  -  *  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  -  -  *  -  - 
 -  -  *  -  -  -  -  - 

 -  -  -  *  -  -  -  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  -  *  -  -  - 
 -  -  -  -  -  -  *  - 
 *  -  -  -  -  -  -  - 
 -  -  *  -  -  -  -  - 
 -  -  -  -  -  *  -  - 

 -  -  -  *  -  -  -  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  -  -  *  -  - 
 *  -  -  -  -  -  -  - 
 -  -  *  -  -  -  -  - 
 -  -  -  -  *  -  -  - 
 -  -  -  -  -  -  *  - 

 -  -  -  *  -  -  -  - 
 -  -  -  -  -  *  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  -  *  -  -  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  *  -  -  -  -  - 
 -  -  -  -  -  -  *  - 

 -  -  -  *  -  -  -  - 
 -  -  -  -  -  *  -  - 
 -  -  -  -  -  -  -  * 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 *  -  -  -  -  -  -  - 
 -  -  *  -  -  -  -  - 
 -  -  -  -  *  -  -  - 

 -  -  -  *  -  -  -  - 
 -  -  -  -  -  *  -  - 
 -  -  -  -  -  -  -  * 
 -  -  *  -  -  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  -  -  -  *  -  -  - 
 -  *  -  -  -  -  -  - 

 -  -  -  *  -  -  -  - 
 -  -  -  -  -  -  *  - 
 *  -  -  -  -  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  -  *  -  -  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  *  -  - 
 -  -  *  -  -  -  -  - 

 -  -  -  *  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  -  *  -  -  -  -  - 
 -  -  -  -  -  -  -  * 
 -  *  -  -  -  -  -  - 
 -  -  -  -  *  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  -  -  *  -  - 

 -  -  -  *  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  -  -  -  *  -  -  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  *  -  - 
 *  -  -  -  -  -  -  - 
 -  -  *  -  -  -  -  - 
 -  -  -  -  -  -  -  * 

 -  -  -  *  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  -  -  -  *  -  -  - 
 -  -  *  -  -  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  -  -  *  -  - 
 -  -  -  -  -  -  -  * 
 -  *  -  -  -  -  -  - 

 -  -  -  *  -  -  -  - 
 -  -  -  -  -  -  -  * 
 *  -  -  -  -  -  -  - 
 -  -  *  -  -  -  -  - 
 -  -  -  -  -  *  -  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  -  -  -  *  -  -  - 

 -  -  -  *  -  -  -  - 
 -  -  -  -  -  -  -  * 
 *  -  -  -  -  -  -  - 
 -  -  -  -  *  -  -  - 
 -  -  -  -  -  -  *  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  *  -  - 
 -  -  *  -  -  -  -  - 

 -  -  -  *  -  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  -  *  -  -  - 
 -  -  *  -  -  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  *  -  - 

 -  -  -  -  *  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  *  -  -  -  - 
 -  -  -  -  -  *  -  - 
 -  -  -  -  -  -  -  * 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  -  *  -  -  -  -  - 

 -  -  -  -  *  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  *  -  -  -  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  -  *  -  -  -  -  - 
 -  -  -  -  -  *  -  - 

 -  -  -  -  *  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  -  -  *  -  - 
 -  -  *  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  *  -  -  -  -  -  - 
 -  -  -  *  -  -  -  - 

 -  -  -  -  *  -  -  - 
 -  *  -  -  -  -  -  - 
 -  -  -  *  -  -  -  - 
 -  -  -  -  -  *  -  - 
 -  -  -  -  -  -  -  * 
 -  -  *  -  -  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  -  -  -  *  - 

 -  -  -  -  *  -  -  - 
 -  *  -  -  -  -  -  - 
 -  -  -  *  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  -  *  -  -  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  -  -  *  -  - 
 *  -  -  -  -  -  -  - 

 -  -  -  -  *  -  -  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  *  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  -  -  *  -  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  *  -  -  -  -  - 

 -  -  -  -  *  -  -  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  -  -  * 
 *  -  -  -  -  -  -  - 
 -  -  -  *  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  -  *  -  -  -  -  - 
 -  -  -  -  -  *  -  - 

 -  -  -  -  *  -  -  - 
 -  -  *  -  -  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  -  -  *  -  - 
 -  -  -  -  -  -  -  * 
 -  *  -  -  -  -  -  - 
 -  -  -  *  -  -  -  - 
 -  -  -  -  -  -  *  - 

 -  -  -  -  *  -  -  - 
 -  -  *  -  -  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  -  -  *  -  - 
 -  -  -  *  -  -  -  - 

 -  -  -  -  *  -  -  - 
 -  -  *  -  -  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  *  -  -  -  - 
 -  -  -  -  -  -  *  - 
 *  -  -  -  -  -  -  - 
 -  -  -  -  -  *  -  - 
 -  *  -  -  -  -  -  - 

 -  -  -  -  *  -  -  - 
 -  -  -  -  -  -  *  - 
 *  -  -  -  -  -  -  - 
 -  -  *  -  -  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  -  -  *  -  - 
 -  -  -  *  -  -  -  - 
 -  *  -  -  -  -  -  - 

 -  -  -  -  *  -  -  - 
 -  -  -  -  -  -  *  - 
 *  -  -  -  -  -  -  - 
 -  -  -  *  -  -  -  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  -  -  *  -  - 
 -  -  *  -  -  -  -  - 

 -  -  -  -  *  -  -  - 
 -  -  -  -  -  -  *  - 
 -  *  -  -  -  -  -  - 
 -  -  -  *  -  -  -  - 
 -  -  -  -  -  -  -  * 
 *  -  -  -  -  -  -  - 
 -  -  *  -  -  -  -  - 
 -  -  -  -  -  *  -  - 

 -  -  -  -  *  -  -  - 
 -  -  -  -  -  -  *  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  *  -  - 
 -  -  *  -  -  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  *  -  -  -  - 
 -  -  -  -  -  -  -  * 

 -  -  -  -  *  -  -  - 
 -  -  -  -  -  -  *  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  *  -  - 
 -  -  *  -  -  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  *  -  -  -  - 

 -  -  -  -  *  -  -  - 
 -  -  -  -  -  -  *  - 
 -  -  -  *  -  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  *  -  -  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  -  -  *  -  - 
 -  *  -  -  -  -  -  - 

 -  -  -  -  *  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  *  -  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  *  -  -  -  -  - 
 -  -  -  -  -  *  -  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  -  *  - 

 -  -  -  -  *  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  *  -  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  *  -  - 
 -  -  *  -  -  -  -  - 

 -  -  -  -  -  *  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  -  *  -  -  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  *  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  -  -  *  -  -  -  - 

 -  -  -  -  -  *  -  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 *  -  -  -  -  -  -  - 
 -  -  *  -  -  -  -  - 
 -  -  -  -  *  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  *  -  -  -  - 

 -  -  -  -  -  *  -  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 *  -  -  -  -  -  -  - 
 -  -  -  *  -  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  -  *  -  -  - 
 -  -  *  -  -  -  -  - 

 -  -  -  -  -  *  -  - 
 -  -  *  -  -  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  -  -  -  *  -  -  - 
 -  -  -  -  -  -  -  * 
 -  *  -  -  -  -  -  - 
 -  -  -  *  -  -  -  - 

 -  -  -  -  -  *  -  - 
 -  -  *  -  -  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  *  -  -  -  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  -  -  -  *  -  -  - 

 -  -  -  -  -  *  -  - 
 -  -  *  -  -  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  -  *  -  -  - 
 -  *  -  -  -  -  -  - 
 -  -  -  *  -  -  -  - 
 -  -  -  -  -  -  *  - 

 -  -  -  -  -  *  -  - 
 -  -  *  -  -  -  -  - 
 -  -  -  -  *  -  -  - 
 -  -  -  -  -  -  *  - 
 *  -  -  -  -  -  -  - 
 -  -  -  *  -  -  -  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  -  -  * 

 -  -  -  -  -  *  -  - 
 -  -  *  -  -  -  -  - 
 -  -  -  -  *  -  -  - 
 -  -  -  -  -  -  -  * 
 *  -  -  -  -  -  -  - 
 -  -  -  *  -  -  -  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  -  *  - 

 -  -  -  -  -  *  -  - 
 -  -  *  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  *  -  -  -  -  -  - 
 -  -  -  *  -  -  -  - 
 -  -  -  -  -  -  -  * 
 *  -  -  -  -  -  -  - 
 -  -  -  -  *  -  -  - 

 -  -  -  -  -  *  -  - 
 -  -  *  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  -  *  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  *  -  -  -  - 

 -  -  -  -  -  *  -  - 
 -  -  *  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  -  -  *  -  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  -  -  -  -  * 
 -  *  -  -  -  -  -  - 
 -  -  -  -  *  -  -  - 

 -  -  -  -  -  *  -  - 
 -  -  -  *  -  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  -  *  -  -  - 
 -  -  -  -  -  -  -  * 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  -  *  -  -  -  -  - 

 -  -  -  -  -  *  -  - 
 -  -  -  *  -  -  -  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  -  *  -  -  - 
 -  -  -  -  -  -  *  - 
 *  -  -  -  -  -  -  - 
 -  -  *  -  -  -  -  - 

 -  -  -  -  -  *  -  - 
 -  -  -  *  -  -  -  - 
 -  -  -  -  -  -  *  - 
 *  -  -  -  -  -  -  - 
 -  -  *  -  -  -  -  - 
 -  -  -  -  *  -  -  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  -  -  * 

 -  -  -  -  -  *  -  - 
 -  -  -  *  -  -  -  - 
 -  -  -  -  -  -  *  - 
 *  -  -  -  -  -  -  - 
 -  -  -  -  -  -  -  * 
 -  *  -  -  -  -  -  - 
 -  -  -  -  *  -  -  - 
 -  -  *  -  -  -  -  - 

 -  -  -  -  -  *  -  - 
 -  -  -  -  -  -  -  * 
 -  *  -  -  -  -  -  - 
 -  -  -  *  -  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  -  -  -  *  -  -  - 
 -  -  *  -  -  -  -  - 

 -  -  -  -  -  -  *  - 
 *  -  -  -  -  -  -  - 
 -  -  *  -  -  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  -  -  *  -  - 
 -  -  -  *  -  -  -  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  *  -  -  - 

 -  -  -  -  -  -  *  - 
 -  *  -  -  -  -  -  - 
 -  -  -  *  -  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  -  *  -  -  - 
 -  -  *  -  -  -  -  - 
 -  -  -  -  -  *  -  - 

 -  -  -  -  -  -  *  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  *  -  - 
 -  -  *  -  -  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  *  -  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  -  *  -  -  - 

 -  -  -  -  -  -  *  - 
 -  -  *  -  -  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  -  -  *  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  -  *  -  -  - 
 -  *  -  -  -  -  -  - 
 -  -  -  *  -  -  -  - 

 -  -  -  -  -  -  *  - 
 -  -  *  -  -  -  -  - 
 -  -  -  -  -  -  -  * 
 -  *  -  -  -  -  -  - 
 -  -  -  -  *  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  -  -  *  -  - 
 -  -  -  *  -  -  -  - 

 -  -  -  -  -  -  *  - 
 -  -  -  *  -  -  -  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  *  -  -  - 
 -  -  -  -  -  -  -  * 
 *  -  -  -  -  -  -  - 
 -  -  *  -  -  -  -  - 
 -  -  -  -  -  *  -  - 

 -  -  -  -  -  -  *  - 
 -  -  -  *  -  -  -  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  -  -  * 
 -  -  -  -  -  *  -  - 
 *  -  -  -  -  -  -  - 
 -  -  *  -  -  -  -  - 
 -  -  -  -  *  -  -  - 

 -  -  -  -  -  -  *  - 
 -  -  -  -  *  -  -  - 
 -  -  *  -  -  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  -  -  *  -  - 
 -  -  -  -  -  -  -  * 
 -  *  -  -  -  -  -  - 
 -  -  -  *  -  -  -  - 

 -  -  -  -  -  -  -  * 
 -  *  -  -  -  -  -  - 
 -  -  -  *  -  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  -  -  -  *  -  -  - 
 -  -  *  -  -  -  -  - 
 -  -  -  -  -  *  -  - 

 -  -  -  -  -  -  -  * 
 -  *  -  -  -  -  -  - 
 -  -  -  -  *  -  -  - 
 -  -  *  -  -  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  -  -  *  -  -  -  - 
 -  -  -  -  -  *  -  - 

 -  -  -  -  -  -  -  * 
 -  -  *  -  -  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  -  -  -  *  -  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  *  -  -  - 
 -  -  -  -  -  -  *  - 
 -  -  -  *  -  -  -  - 

 -  -  -  -  -  -  -  * 
 -  -  -  *  -  -  -  - 
 *  -  -  -  -  -  -  - 
 -  -  *  -  -  -  -  - 
 -  -  -  -  -  *  -  - 
 -  *  -  -  -  -  -  - 
 -  -  -  -  -  -  *  - 
 -  -  -  -  *  -  -  - 
于 2015-12-06T18:06:28.253 回答