Форумы-->Форум для внеигровых тем-->
| Автор | перенести задачу на 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) |
|---|
К списку тем
|