Форум программистов, компьютерный форум CyberForum.ru

Требуется совершить обход квадратной матрицы по спирали - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.83
AkA_ZadR
 Аватар для AkA_ZadR
0 / 0 / 0
Регистрация: 07.09.2011
Сообщений: 8
09.09.2011, 20:08     Требуется совершить обход квадратной матрицы по спирали #1
помогите с этой задачкой ))




Спираль
(Время: 1 сек. Память: 16 Мб Сложность: 38%)
Требуется совершить обход квадратной матрицы по спирали так, как показано на рисунке справа: заполнение происходит с единицы из левого верхнего угла и заканчивается в центре числом N2, где N – порядок матрицы.

Входные данные
Во входном файле INPUT.TXT задано натуральное число N – размер квадратной матрицы (N<=100).

Выходные данные
В выходной файл OUTPUT.TXT выведите матрицу, заполненную числами от 1 до N2 по спирали, при этом между числами может быть любое количество пробелов.

Пример
№ INPUT.TXT OUTPUT.TXT
5 1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.09.2011, 20:08     Требуется совершить обход квадратной матрицы по спирали
Посмотрите здесь:

Обход матрицы по спирали C++
Заполнение матрицы по спирали C++
Заполнение матрицы по спирали C++
Выполнить обход матрицы по спирали C++
C++ Как можно совершить обход двоичного дерева нерекурсивно
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
HighPredator
09.09.2011, 21:36
  #2

Не по теме:

Хоть бы сделал вид, что думал над задачей. А то просто с E-олимпа условие передрал.

iama
 Аватар для iama
1249 / 974 / 48
Регистрация: 30.07.2010
Сообщений: 5,297
09.09.2011, 23:17     Требуется совершить обход квадратной матрицы по спирали #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <iostream>
 
using namespace std;
 
int main()
{
    int n, i = 1, j = 1, ix, jx, a[102][102] = {}, x = 1;
 
    cin >> n >> ix >> jx;
 
    while (x <= n * n)
    {
        while (j <= n && a[i][j] == 0)
        {
            a[i][j] = x++;
            j++;
        }
        j--;
        i++;
 
        while (i <= n && a[i][j] == 0)
        {
            a[i][j] = x++;
            i++;
        }
        i--;
        j--;
 
        while (j > 0 && a[i][j] == 0)
        {
            a[i][j] = x++;
            j--;
        }
        j++;
        i--;
 
        while (a[i][j] == 0)
        {
            a[i][j] = x++;
            i--;
        }
        i++;
        j++;
    }
 
    // матрица заполенена
 
    return 0;
}
Predator_2004, задача с acmp
Nursik77
 Аватар для Nursik77
273 / 233 / 21
Регистрация: 05.04.2011
Сообщений: 645
10.09.2011, 13:22     Требуется совершить обход квадратной матрицы по спирали #4
В Си:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <stdlib.h>
#include <stdio.h>
#define n 5
 
int main() {
int i=1,j,k,a[n][n],p=n/2;
//заполнение матрицы нулями
for(j=0; j<n; j++)
 for(k=0; k<n; k++)
  a[j][k]=0;
printf("\nMatrica razmerom (%d*%d)\n\n",n,n);
for(k=1; k<=p; k++)//kol-vo spiralei
{//verhn.goriz riyad
 for(j=(k-1); j<(n-k+1); j++)
  a[k-1][j]=i++;
//pravi verhn. stolbec
for(j=k; j<(n-k+1); j++)
 a[j][n-k]=i++;
//nizhni goriz riyad
for(j=(n-k-1); j>=k-1; j--)
 a[n-k][j]=i++;
//levi kraini stolbec
for(j=n-k-1; j>=k; j--)
 a[j][k-1]=i++;
}
 if (n%2)
  a[p][p]=n*n;
  
for(i=0; i<n; i++)
 for(j=0; j<n; j++)
  {printf("%5d",a[i][j]);
   if(j==(n-1))
  printf("\n\n");
 }
system("pause");
}
-=ЮрА=-
Заблокирован
Автор FAQ
10.09.2011, 21:29     Требуется совершить обход квадратной матрицы по спирали #5
Сюда http://www.cyberforum.ru/cpp/thread60495.html
Yandex
Объявления
10.09.2011, 21:29     Требуется совершить обход квадратной матрицы по спирали
Ответ Создать тему
Опции темы

Текущее время: 02:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru