皇后问题之C#版(非递归)[2]

[入库:2006年2月23日] [更新:2007年3月24日]

本文简介:

                if (y < board_size)
                {
                    //第X行的棋子落下
                    rows[x] = 1; cols[y] = 1; slot1[x + y] = 1; slot2[x - y + board_size - 1] = 1; x2y[x] = y;
                }  
                else
                {
                    //回溯,拿起棋子
                    if (x > 0)
                    {
                        x2y[x] = -1;
                        x--;
                        rows[x] = 0; cols[x2y[x]] = 0; slot1[x + x2y[x]] = 0; slot2[x - x2y[x] + board_size - 1] = 0;
                        continue;
                    }
                    else break;
                }
                if (x == board_size - 1)   //如果已经得到了一组解,即当最后一行棋子落定之时
                {
                    for (int i = 0; i < board_size; i++)
                    {
                        for (int j = 0; j < board_size; j++)
                        {
                            if (x2y[i] == j) Console.Write("Q");
                            else Console.Write("■");
                        }
                        Console.Write("\n");
                       
                    }
                    Console.Write("\n");
                    solution_count++;   //总方案数加一
                    rows[x] = 0; cols[x2y[x]] = 0; slot1[x + x2y[x]] = 0; slot2[x - x2y[x] + board_size - 1] = 0;//放弃这一列

本文关键:皇后问题之C#版(非递归)
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top