Advertisement
rjcostales

brute_force.c

Jul 24th, 2023 (edited)
1,229
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.60 KB | Gaming | 0 0
  1. /* C/C++ program to solve N Queen Problem using brute force */
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <stdbool.h>
  5.  
  6. #define N 8
  7.  
  8. void print(int board[N][N])
  9. {
  10.     for (int row = 0; row < N; row++) {
  11.         for (int col = 0; col < N; col++) {
  12.             printf(" %d", board[row][col]);
  13.         }
  14.         printf("\n");
  15.     }
  16. }
  17.  
  18. void zero(int board[N][N])
  19. {
  20.     for (int i = 0; i < N; i++)
  21.         for (int j = 0; j < N; j++)
  22.             board[i][j] = 0;
  23. }
  24.  
  25. bool check(int board[N][N])
  26. {
  27.     int     queens[8] = { 8 };
  28.  
  29.     for (int col = 0; col < N; col++) {
  30.         int     count = 0;
  31.  
  32.         for (int row = 0; row < N; row++) {
  33.             if (board[row][col] == 1) {
  34.                 count++;
  35.                 if (count > 1)
  36.                     return false;
  37.  
  38.                 queens[col] = row;
  39.             }
  40.         }
  41.     }
  42.  
  43.     for (int i = 0; i < N - 1; i++) {
  44.         for (int j = i + 1; j < N; j++) {
  45.             if (abs(i - j) == abs(queens[i] - queens[j]))
  46.                 return false;
  47.         }
  48.     }
  49.     return true;
  50. }   /* check */
  51.  
  52. int main()
  53. {
  54.     int     count = 0;
  55.     int     board[N][N];
  56.  
  57.     for (int a = 0; a < N; a++)
  58.         for (int b = 0; b < N; b++)
  59.             for (int c = 0; c < N; c++)
  60.                 for (int d = 0; d < N; d++)
  61.                     for (int e = 0; e < N; e++)
  62.                         for (int f = 0; f < N; f++)
  63.                             for (int g = 0; g < N; g++)
  64.                                 for (int h = 0; h < N; h++) {
  65.                                     zero(board);
  66.                                     board[0][a] = 1;
  67.                                     board[1][b] = 1;
  68.                                     board[2][c] = 1;
  69.                                     board[3][d] = 1;
  70.                                     board[4][e] = 1;
  71.                                     board[5][f] = 1;
  72.                                     board[6][g] = 1;
  73.                                     board[7][h] = 1;
  74.                                     if (check(board)) {
  75.                                         printf("solution: %d\n", ++count);
  76.                                         print(board);
  77.                                     }
  78.                                 }
  79.     return 0;
  80. }   /* main */
  81.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement