292
Cerința
Se dă un număr natural n
. Să se genereze o matrice pătratică de dimensiune 2
n
, după următoarele reguli:
- împărțim matricea în
4
submatrice - cea din stânga-sus are toate elementele
1
- celelalte trei se generează similar, dar au dimensiunea
2
n-1
.
Date de intrare
Programul citește de la tastatură numărul n
.
Date de ieșire
Programul va afișa pe ecran matricea construită, câte o linie a matricei pe o linie a ecranului, elementele de pe o linie fiind separate prin câte un spațiu.
Restricții și precizări
1 ≤ n ≤ 10
Exemplu
Intrare
3
Ieșire
1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 0 1 1 1 1 1 0 1 0 1 1 1 1 0 0 0 0 1 1 1 0 1 1 1 0 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0
Explicație
Matricea generată corespunde următorului pattern:
#include <bits/stdc++.h> using namespace std; int n , p , a[1050][1050]; void pattern (int i1 , int j1 , int i2 , int j2) { if(i1 < i2) { int im = (i1 + i2) / 2 , jm = (j1 + j2) / 2; for(int i = i1 ; i <= im ; i ++) for(int j = j1 ; j <= jm ; j ++) a[i][j] = 1; pattern(i1 , jm + 1 , im , j2); pattern(im + 1 , j1 , i2 , jm); pattern(im + 1 , jm + 1 , i2 , j2); } } int main() { cin >> n; p = 1; for(int i = 1 ; i <= n ; i ++) p *= 2; pattern(1 , 1 , p , p); for(int i = 1 ; i <= p ; i ++) { for(int j = 1; j <= p ; j ++) cout << a[i][j] << " "; cout << endl; } return 0; }
Comentarii