Rezolvare completă PbInfo #845 Pattern

Cerința

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

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema Pattern:

#include <iostream>
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;
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #845 Pattern

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #845 Pattern de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!