Районная олимпиада по информатике. 2008-2009 учебный год.


Есеп E. Серіппе

Ограничение по времени:
2 seconds
Ограничение по памяти:
64 megabytes

$N$ мөлшерлі серіппе - натуральды сандардылардың $N$x$N$ мөлшерімен кестесі, кесте орталығында әрқашан 1 тұрады, одан оң жақтан 2, серіппе қарсы сағаттық тілдің бұралып қалып жатыр. $N$ мөлшерлі серіппесін шығарыңыздар.
Формат входного файла
Кіріс файлдың жекеше жолында бір бүтін сан жазылған – $N$ ($1 <= N < 100$, $N$ – тақ сан).
Формат выходного файла
Шығыс файлдың $N$ жолда $N$ бүтін саны жазу керек – $N$ мөлшерлі спираль. Сандар аралары пробелмен бөлінген болу керек.
Примеры:
Вход
1
Ответ
1
Вход
3
Ответ
5 4 3
6 1 2
7 8 9
Вход
5
Ответ
17 16 15 14 13
18  5  4  3 12
19  6  1  2 11
20  7  8  9 10
21 22 23 24 25
посмотреть в олимпиаде

Комментарий/решение:

  1
2018-12-08 18:32:56.0 #

кодты корсету/жасыру

пред. Правка 2   0
2022-02-05 19:43:12.0 #

кодты корсету/жасыру

void solve() {

cin >> n;

vector<vector<ll>> v(n, vector<ll>(n, 0));

ll nums = n * n, l_start = 0, l_end = n - 1, r_start = 0, r_end = n - 1;

while (nums >= 1) {

for (int i = r_end; i >= r_start; i -= 1) {

v[l_end][i] = nums;

nums -= 1;

}

l_end -= 1;

for (int i = l_end; i >= l_start; i -= 1) {

v[i][r_start] = nums;

nums -= 1;

}

r_start += 1;

for (int i = r_start; i <= r_end; i += 1) {

v[l_start][i] = nums;

nums -= 1;

}

l_start += 1;

for (int i = l_start; i <= l_end; i += 1) {

v[i][r_end] = nums;

nums -= 1;

}

r_end -= 1;

}

show(v);

}