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