Advertisement
STANAANDREY

color matrix sda

Jan 12th, 2024
1,011
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.97 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdbool.h>
  4. #define LAST_COL 4
  5. int n = 4, m = 4;
  6. int matrix[111][111];
  7.  
  8. bool valid(int row, int col, int color) {
  9.     if ((row > 0 && col > 0 && matrix[row - 1][col - 1] == color) ||
  10.         (row > 0 && col < m - 1 && matrix[row - 1][col + 1] == color) ||
  11.         (row < n - 1 && col > 0 && matrix[row + 1][col - 1] == color) ||
  12.         (row < n - 1 && col < m - 1 && matrix[row + 1][col + 1] == color)) {
  13.         return false;
  14.     }
  15.     return true;
  16. }
  17.  
  18. void printMatrix() {
  19.     for (int i = 0; i < n; i++) {
  20.         for (int j = 0; j < m; j++) {
  21.             printf("%d ", matrix[i][j]);
  22.         }
  23.         puts("");
  24.     }
  25. }
  26.  
  27. void bktr(int i, int j) {
  28.     if (i == n) {
  29.         printMatrix();
  30.         puts("----------------------------------");
  31.         return;
  32.     }
  33.     for (int c = 1; c <= LAST_COL; c++) {
  34.         if (valid(i, j, c)) {
  35.             matrix[i][j] = c;
  36.             int nxtJ = j == m ? 0 : j + 1;
  37.             int nxtI = j == m ? i + 1 : i;
  38.             bktr(nxtI, nxtJ);
  39.         }
  40.     }
  41. }
  42.  
  43.  
  44. int main(void) {
  45.     bktr(0, 0);
  46.     return 0;
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement