299
Cerința
Se dă un număr natural n
. Să se genereze o matrice pătratică de dimensiune 2
n
-1
, după următoarele reguli:
- elementul din mijlocul matricii este egal cu
n
- elementele de pe linia mediană și cele de pe coloana mediană (exceptând elementul din mijlocul matricii) sunt nule
- folosind linia mediană și coloana mediană, se împarte matricea în alte
4
matrici care se generează similar, dar au dimensiunea2
n-1
-1
.
Date de intrare
Programul citește de la tastatură numărul n
.
Date de ieșire
Programul va afișa pe ecran matricea generată.
Restricții și precizări
1 ≤ n ≤ 9
Exemplu
Intrare
3
Ieșire
1 0 1 0 1 0 1 0 2 0 0 0 2 0 1 0 1 0 1 0 1 0 0 0 3 0 0 0 1 0 1 0 1 0 1 0 2 0 0 0 2 0 1 0 1 0 1 0 1
#include <bits/stdc++.h> using namespace std; int m[511][511]; void pat(int n, int L, int l, int c) { L /= 2; m[l][c] = n; if (n > 1) { int semiLatura = L / 2 + 1; pat(n - 1, L, l - semiLatura, c - semiLatura); pat(n - 1, L, l - semiLatura, c + semiLatura); pat(n - 1, L, l + semiLatura, c - semiLatura); pat(n - 1, L, l + semiLatura, c + semiLatura); } } int main() { int n; cin >> n; int L = pow(2, n) - 1; pat(n, L, L / 2, L / 2); for(int i = 0; i < L; i++) { for(int j = 0; j < L; j++) cout << m[i][j] << ' '; cout << '\n'; } return 0; }
Comentarii