Răspuns:
#include <iostream>
using namespace std;
short a[102][102];
int main()
{
short n, i, j, m, p=0;
cin >> n;
m=n/2+1;
for (i=1; i<=n; ++i)
{ if (i<=m) ++p;
else --p;
a[i][m]=p; }
for (i=1; i<=n; ++i)
{
for (j=m-1; j>=1; --j)
if (a[i][j+1]>1)
{ a[i][j]=a[i][j+1]-1; a[i][2*m-j]=a[i][j]; }
}
for (i=1; i<=n; ++i)
{
for (j=1; j<=n; ++j)
cout << a[i][j] << " ";
cout << "\n";
}
return 0;
}
Explicație:
se completeaza coloana de mijloc, apoi elementele coloanelor din stanga cu copiere in partea dreapta, deoarece avem simetrie axiala