👤

Ma poate ajuta cineva cu aceasta problema?
problema #1952 pe pbinfo

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
Help


Răspuns :

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

}

Vă mulțumim pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile prezentate v-au fost utile. Dacă aveți întrebări suplimentare sau nevoie de ajutor, vă rugăm să ne contactați cu încredere. Așteptăm cu drag să reveniți și nu uitați să ne salvați în lista dumneavoastră de favorite!


En Studentsy: Alte intrebari