C/C++

Помогитеее у меня время! задача с ++

Дано число n. Создайте двумерный массив размером n×n и заполните его в соответствии с примером.
5 1 4 5 16 17
2 3 6 15 18
9 8 7 14 19
10 11 12 13 20
25 24 23 22 21
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
cout << "n: ";
int n;
cin >> n;
const int m = n * n;
int** matrix = new int*[n];
for (int i = 0; i < n; ++i) matrix[i] = new int[n];
int i = 0;
int j = 0;
int v = 0;
bool down = true;
bool right = false;
bool up = false;
bool left = false;
while (v < m) {
if (!v) matrix[i][j] = ++v;
if (down) {
if (!j) matrix[++i][j] = ++v;
else while (i < j) matrix[++i][j] = ++v;
down = false;
if (i & 1) right = true;
else left = true;
}
if (up) {
while (i > 0) matrix[--i][j] = ++v;
up = false;
right = true;
}
if (left) {
while (j > 0) matrix[i][--j] = ++v;
left = false;
down = true;
}
if (right) {
if (!i) matrix[i][++j] = ++v;
else while (j < i) matrix[i][++j] = ++v;
right = false;
if (i & 1) up = true;
else down = true;
}
}
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) cout << setw(5) << matrix[i][j];
puts("");
}
for (int i = 0; i < n; ++i) delete[] matrix[i];
delete[] matrix;
}
Anatoliy Pashkevich
Anatoliy Pashkevich
58 640
Лучший ответ