|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Andrew Ezhguroff 2:5020/400 13 Nov 2002 04:17:09 To : Oleg Zhigalov Subject : Re: Змейка -------------------------------------------------------------------------------- Привет! "Oleg Zhigalov" <Oleg.Zhigalov@p11.f73.n5054.z2.fidonet.org> сообщил(а): OZ> буду очень пpизнателен кто поделится алгоpитмом по заполнению 2х меpной OZ> матpицы по спиpали (можно из центpа либо из внешних гpаней) OZ> p/s/ pазмеp матpицы динамический Исходник, который делался для сходной задачи (квадратная матрица, заполнение снаружи к центру): // Буфер, в который записывается матрица int Matrix[100][100]; // Таблица приращений x и y для 4-х направлений int Delta[4][2] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}}; // Генерация матрицы void Gen_Matrix(int N){ int x=0; int y=0; int Count = 1; // Последовательно заполняем квадраты, начиная с наружнего for(int Len=(N-1); Len>0; Len-=2){ // Заполняем очередной квадрат for(int Index=0; Index<4; Index++){ for(int Tmp=0; Tmp<Len; Tmp++){ Matrix[y][x]=Count; y+=Delta[Index][0]; x+=Delta[Index][1]; Count++; } } // Переходим к следующему квадрату x++; y++; } // Если размер нечетный, заполняем центральное поле if(Count==N*N)Matrix[y][x]=Count; } С уважением, Андрей. -- Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru --- ifmail v.2.15dev5 * Origin: Talk.Mail.Ru (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/6488d8db1579.html, оценка из 5, голосов 10
|