Re: Змейка
- From
- Andrew Ezhguroff ()
- To
- Oleg Zhigalov
- Date
- 2002-11-13T03:17:09Z
- Area
- RU.ALGORITHMS
From: "Andrew Ezhguroff" <eandr@com2com.ru>
Привет! "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)