Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <time.h>
- #include <stdlib.h>
- #include <algorithm>
- #include <locale.h>
- using namespace std;
- const int n=11;
- int arr[n][n];
- int main(void) {
- int x = n / 2;
- int y = x;
- int elem = 1, cnt = 1;
- while (true) {
- if (cnt % 2 == 1) {
- int i = y;
- int end = max(0, i-cnt);
- bool flag = ((i-cnt) < 0);
- for (; i>end; --i) {
- arr[x][i] = elem;
- ++ elem;
- //printf("i = %d, j = %d\n", x, i);
- }
- if (flag) {
- arr[x][i] = elem;
- //printf("i = %d, j = %d\n", x, i);
- break;
- }
- y = i;
- i = x;
- end = max(0, i-cnt);
- flag = ((i-cnt) < 0);
- for (; i>end; --i) {
- arr[i][y] = elem;
- ++ elem;
- //printf("i = %d, j = %d\n", i, y);
- }
- if (flag) {
- arr[i][y] = elem;
- //printf("i = %d, j = %d\n", i, y);
- break;
- }
- x = i;
- ++ cnt;
- }
- else {
- int i = y;
- int end = min(n-1, i+cnt);
- bool flag = ((i+cnt) >= n);
- for (; i<end; ++i) {
- arr[x][i] = elem;
- ++ elem;
- //printf("i = %d, j = %d\n", x, i);
- }
- if (flag) {
- arr[x][i] = elem;
- //printf("i = %d, j = %d\n", x, i);
- break;
- }
- y = i;
- i = x;
- end = min(n-1, i+cnt);
- flag = ((i+cnt) >= n);
- for (; i<end; ++i) {
- arr[i][y] = elem;
- ++ elem;
- //printf("i = %d, j = %d\n", i, y);
- }
- if (flag) {
- arr[i][y] = elem;
- //printf("i = %d, j = %d\n", i, y);
- break;
- }
- x = i;
- ++ cnt;
- }
- }
- for (int i = 0; i < n; ++ i) {
- for (int j = 0; j < n; ++ j)
- printf("%5d ", arr[i][j]);
- printf("\n");
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement