Rezolvare completă PbInfo #1952 pattern1

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 

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 pattern1:

#include <iostream>
using namespace std;

int A[515][515],n;

void pattern(int A[][515],int n,int sus,int jos,int st,int dr)
{
    if(n>=1)
    {
        int mi=(sus+jos)/2;
        int mj=(st+dr)/2;
        A[mi][mj]=n;
        pattern(A,n-1,sus,mi-1,st,mj-1);//NV
        pattern(A,n-1,sus,mi-1,mj+1,dr);//NE
        pattern(A,n-1,mi+1,jos,st,mj-1);//SV
        pattern(A,n-1,mi+1,jos,mj+1,dr);//SE
    }
}

void afisare(int A[][515],int n)
{
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
            cout<<A[i][j]<<" ";
        cout<<endl;
    }
}

int xlan(int x, int n)
{
    if(n==0) return 1;
    else
    {
        int p=xlan(x,n/2);
        if(n%2==0) return p*p;
        else return p*p*x;
    }
}

int main()
{
    int n,m;
    cin>>n;
    m=xlan(2,n)-1;
    pattern(A,n,1,m,1,m);
    afisare(A,m);
    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 #1952 pattern1

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1952 pattern1 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!