#include #define rand() dis(gen) using namespace std; int i, j, a[20][20], rs; mt19937 gen(time(0)); uniform_int_distribution dis(0, 1e6); bool check(int x, int y, int xx, int yy) { int freq[400]; memset(freq, 0, sizeof(freq)); int sz = (xx - x + 1) * (yy - y + 1); for(int i = x; i <= xx; ++i) for(int j = y; j <= yy; ++j) ++freq[a[i][j]]; for(int i = 1; i <= sz; ++i) if(freq[i] != 1) return 0; return 1; } int main() { ios_base::sync_with_stdio(0); for(i = 1; i <= 16; ++i) for(j = 1; j <= 16; ++j) if(i & 1) a[i][j] = (j & 1 ? 1 : 2); else a[i][j] = (j & 1 ? 2 : 1); while(1) { for(i = 1; i <= 16; ++i) for(j = 1; j <= 16; ++j) a[i][j] = 1 + rand() % 4; for(i = 1; i <= 16; ++i) for(j = 1; j <= 16; ++j) for(int k = i; k <= 16; ++k) for(int it = j; it <= 16; ++it) if(check(i, j, k, it)) ++rs; if(rs >= 800) break; } for(i = 1; i <= 16; ++i) for(j = 1; j <= 16; ++j) cout << a[i][j] << " \n"[j == 16]; return 0; }