八皇后问题
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 }
以上是关于八皇后问题的主要内容,如果未能解决你的问题,请参考以下文章