八皇后问题

Posted 夏午晴天

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了八皇后问题相关的知识,希望对你有一定的参考价值。

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #define N 8
 4 bool matrix[N][N] = {0};
 5 void Print(bool m[N ][N ]){
 6     static int count = 1;
 7     printf("Case %d:\n", count++);
 8     for (int i = 0; i < N; i++) {
 9         for (int j = 0; j < N; j++)
10             m[i][j]==1?printf("Q") : printf(".");
11         printf("\n");
12     }
13     printf("\n");
14 }
15 bool Safety(bool m[N][N], int row, int col)
16 {
17     for (int i = 0; i < row ; i++)
18     {
19          for (int j = 0; j < N; j++)
20                    if(m[i][j]==1&&(j==col||abs(row-i)==abs(col-j)))
21                 return false;
22     }
23     return true;
24 }
25 void BackTrack(const int i) {
26     if (i >=N)
27         Print(matrix);
28     else
29         for (int j = 0; j < N; ++j) {
30             matrix[i][j] = 1;
31             if(Safety(matrix,i,j))
32                          BackTrack(i + 1);
33             matrix[i][j] = 0;
34         }
35 }
36 int main(void)
37 {
38     BackTrack(0);
39     return 0;
40 }

 

以上是关于八皇后问题的主要内容,如果未能解决你的问题,请参考以下文章

八皇后,回溯与递归(Python实现)

基于WPF的八皇后简单应用程序

八皇后问题的遗传算法解法,c语言编写

八皇后问题

八皇后

八皇后问题