Об игре
Новости
Войти
Регистрация
Рейтинг
Форум
19:42
4294
 online
Требуется авторизация
Вы не авторизованы
   Форумы-->Форум для внеигровых тем-->

Авторперенести задачу на n-мерный случай
помогите пожалуйста перенести задачу обхода конем всего поля с поля 8*8 на любое квадратное, сторона которого задается пользователем.

вот код для поля 8*8:

#include <stdio.h>
#include <conio.h>
int i, j, n, nsqr, q ;
int dx[9], dy[9], h[29][29] ;

void prnt(void){
//вывод поля на экран
int p, r;
for ( p = 1; p <= n; p++){
for ( r = 1; r <= n; r++)
printf("%2d ", h[p][r]);
printf("\n");
}
printf("\n");
}

int set (int i, int x, int y){
// возвращает 1, если доска заполнена, 0 - если нет продолжений
int j, u, v , q1=0 ;
for(j = 1; (!q1) && (j <= 8); j++){
u = x + dx[j] ; v = y + dy[j] ;
if ( 1 <= u && u <= n && 1 <= v && v <= n && h[u][v] == 0){
h[u][v] = i ;
if (i < nsqr){
q1 = set (i + 1, u, v);
if (q1 == 0) h[u][v] = 0;
}
else q1 = 1;
}
}
return q1;
}
int main()
{
dx[1] = 2; dx[2] = 1; dx[3] = -1; dx[4] = -2;
dx[5] = -2; dx[6] = -1; dx[7] = 1; dx[8] = 2;
dy[1] = 1; dy[2] = 2; dy[3] = 2; dy[4] = 1;
dy[5] = -1; dy[6] = -2; dy[7] = -2; dy[8] = -1;
n = 8;
nsqr = n*n;
h[1][1] = 1;
set(2,1,1);
prnt();
getch();
}
не ну тут всё ясно. в принципе.
dx[1] = 2; dx[2] = 1; dx[3] = -1; dx[4] = -2;
dx[5] = -2; dx[6] = -1; dx[7] = 1; dx[8] = 2;
dy[1] = 1; dy[2] = 2; dy[3] = 2; dy[4] = 1;
dy[5] = -1; dy[6] = -2; dy[7] = -2; dy[8] = -1;

эту задачу я в гугле нашел, можете объяснить как находятся именно эти цифры? как их перевести в n-мерный случай?
туплю, все настолько очевидно)
тема закрыта by башня007 (2011-05-16 18:57:53)
К списку тем
2007-2025, онлайн игры HeroesWM