Informatică, întrebare adresată de Utilizator anonim, 9 ani în urmă

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

Răspunsuri la întrebare

Răspuns de rossetta
6
#include <iostream>
#include <cmath>
using namespace std;

int m[511][511];

// L dimensiunea laturii
// scriem in m o matrice centrata in (l, c)
// n este val care se scrie in centru

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;
}


Alte întrebări interesante