fbpx

Problema #1952 – pattern1 – Rezolvari PBInfo

de Mihai-Alexandru

Cerința

Se dă un număr natural n. Să se genereze o matrice pătratică de dimensiune 2n-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 dimensiunea 2n-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

S-ar putea sa iti placa