LeetCode Online Judge 题目C# 练习 - N-QueensII

Follow up for N-Queens problem.
Now, instead outputting board configurations, return the total number of distinct solutions.

 1         public static int NQueenII(int n)
 2         {
 3             int[] map = new int[n];
 4             int ret = NQueenIIHelper(map, n, 0);
 5             return ret;
 6         }
 7 
 8         public static int NQueenIIHelper(int[] map, int n, int row)
 9         {
10             if (row >= n || n == 1)
11             {
12                 return 1;
13             }
14 
15             int sum = 0;
16 
17             for (int i = 0; i < n; i++)
18             {
19                 bool valid = true;
20                 for (int j = 0; j < row; j++)
21                 {
22                     if (i == map[j] || Math.Abs(i - map[j]) == row - j)
23                     {
24                         valid = false;
25                         break;
26                     }
27                 }
28                 if (valid)
29                 {
30                     map[row] = i;
31                     sum += NQueenIIHelper(map, n, row + 1);
32                 }
33             }
34 
35             return sum;
36         }

代码分析:

  N-queen的延伸,好像更简单。一样的递归。

posted @ 2012-10-02 03:40  ETCOW  阅读(231)  评论(0编辑  收藏  举报