MathQ_

Untitled

Feb 6th, 2021
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.00 KB | None | 0 0
  1. #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx")
  2. #pragma GCC optimize 03
  3. #pragma GCC optimize("unroll-loops")
  4.  
  5. #include <iostream>
  6. #include <vector>
  7.  
  8. using namespace std;
  9.  
  10. int n, m, c;
  11. int now;
  12.  
  13. bool check(vector<vector<int>> mx, int i, int j) {
  14.     for (int l = 0; l < i; ++l) {
  15.         for (int r = 0; r < j; ++r) {
  16.             if (mx[l][r] == mx[l][j] && mx[l][r] == mx[i][r] && mx[l][r] == mx[i][j]) {
  17.                 return false;
  18.             }
  19.         }
  20.     }
  21.     return true;
  22. }
  23.  
  24. void gen2(vector<vector<int>> mx, int i, int j, int s) {
  25.     mx[i][j] = s;
  26.     if (check(mx, i, j)) {
  27.         if (i == n - 1 && j == m - 1) {
  28.             for (int i = 0; i < n; ++i) {
  29.                 for (int j = 0; j < m; ++j) {
  30.                     cout << mx[i][j] + 1 << " ";
  31.                 }
  32.                 cout << '\n';
  33.             }
  34.             exit(0);
  35.         }
  36.         if (j < m - 1) {
  37.             gen2(mx, i, j + 1, 0);
  38.             gen2(mx, i, j + 1, 1);
  39.         } else {
  40.             gen2(mx, i + 1, 0, 0);
  41.             gen2(mx, i + 1, 0, 1);
  42.         }
  43.     } else {
  44.         return;
  45.     }  
  46. }
  47.  
  48. void gen3(vector<vector<int>> mx, int i, int j, int s) {
  49.     mx[i][j] = s;
  50.     if (check(mx, i, j)) {
  51.         if (i == n - 1 && j == m - 1) {
  52.             for (int i = 0; i < n; ++i) {
  53.                 for (int j = 0; j < m; ++j) {
  54.                     cout << mx[i][j] + 1 << " ";
  55.                 }
  56.                 cout << '\n';
  57.             }
  58.             exit(0);
  59.         }
  60.         if (j < m - 1) {
  61.             gen3(mx, i, j + 1, 0);
  62.             gen3(mx, i, j + 1, 1);
  63.             gen3(mx, i, j + 1, 2);
  64.         } else {
  65.             gen3(mx, i + 1, 0, 0);
  66.             gen3(mx, i + 1, 0, 1);
  67.             gen3(mx, i + 1, 0, 2);
  68.         }
  69.     } else {
  70.         return;
  71.     }  
  72. }
  73.  
  74. int main() {
  75.     cin >> n >> m >> c;
  76.     vector<vector<int>> mx(n, vector<int>(m));
  77.     if (c == 2) {
  78.         gen2(mx, 0, 0, 0);
  79.     } else {
  80.         gen3(mx, 0, 0, 0);
  81.     }
  82.     return 0;
  83. }
Advertisement
Add Comment
Please, Sign In to add comment