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的延伸,好像更简单。一样的递归。

你可能感兴趣的:(LeetCode)