|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Andrew Ezhguroff 2:5020/400 22 Jul 2002 23:36:56 To : Roman Zhelnov Subject : Re: Обход доски шахматным конем -------------------------------------------------------------------------------- Привет! "Roman Zhelnov" <Roman.Zhelnov@p29.f25.n5053.z2.fidonet.org> сообщил(а): RZ> Интересует алгоритм обхода доски шахматным конем. Hа одну клетку RZ> можно вставать только один раз... Если в лоб и рекурсивно, то, например, так: #include <stdio.h> #define Len 8 char Tab[Len][Len]; char Res[Len*Len][3]; int Gen(int X, int Y, int Num){ if(X<0||X>=Len||Y<0||Y>=Len||Tab[X][Y])return 0; Tab[X][Y]=1; if((++Num==Len*Len)|| Gen(X-1, Y-2, Num)||Gen(X-1, Y+2, Num)|| Gen(X+1, Y-2, Num)||Gen(X+1, Y+2, Num)|| Gen(X-2, Y-1, Num)||Gen(X-2, Y+1, Num)|| Gen(X+2, Y-1, Num)||Gen(X+2, Y+1, Num)){ Res[--Num][0]=X+'A'; Res[ Num][1]=Y+'1'; return 1; } Tab[X][Y]=0; return 0; } int main(void){ if(Gen(0, 0, 0)){ for(int i=0; i<Len*Len; i++)printf("%3s", Res[i]); }else{ printf("Ответа нет"); } } С уважением, Андрей. -- Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru --- ifmail v.2.15dev5 * Origin: Talk.Mail.Ru (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/6488204d802c.html, оценка из 5, голосов 10
|