Red de conocimientos turísticos - Información de alquiler - Solución al problema de las ocho reinas

Solución al problema de las ocho reinas

El código fuente c del clásico problema de las Ocho Reinas

# include & ltgraphics.h & gt

# include & ltstdlib.h & gt

# include & ltstdio .h & gt

# include & ltdos.h & gt

char n[3]={\'0\ ',\' 0 \ '};/*para Registre qué conjunto de soluciones*/

int a[8], b[15], c[24], I;

int h[8]={127, 177, 227, 277, 327, 377, 427, 477 }; /* Coordenadas de fila de cada reina */

int l[8]= { 2522171821471127742, 7 } /* Coordenadas de columna de cada reina */

void *arrow;

void try(int i)

{ int j;

for(j = 1; j & lt=8;j++)

If(a[J-1]+b[I+J-2]+c[I-J+7]= = 3)/*if columna I Fila J está vacío */

{ a[j-1]= 0; b[I+j-2]= 0; c[I-j+7]= 0; */

putimage(h[i-1], l[j-1], flecha, COPY_PUT); /*Mostrar patrón de reina*/

Retraso (500); *Retraso*/

Si (i<8) intenta (I+1);

De lo contrario /*Generar un conjunto de soluciones*/

{ n[1 ]++; si (n[1]>\ ' 9 \ '){ n[0]++; n[1]= \ ' 0 \ ';}

Barra (260, 300, 390, 340); /*Mostrar la enésima solución*/

outtextxy(275, 300, n);

Retraso (3000);

p>

getch();

}

a[j-1]= 1; b[I+j-2]= 1; 1;

putimage(h[i-1], l[j-1], flecha, XOR _ PUT /* Elimina la reina y continúa encontrando el siguiente conjunto de soluciones*/

Retraso(500);

}

}

int main(void)

{int gdrive=DETECT ,gmodo,código de error.

Tamaño int sin signo;

init graph(&g drive &gmode, "c:\\\\TC\\\\bgi");

p>

código de error = resultado del gráfico();

if (código de error!=grOk)

{printf("Error del gráfico\ \ n "); ;}

Rectángulo (50, 5, 100, 40);

Rectángulo (60, 25, 90, 33);

/*Dibuja una corona; */

Línea (60, 28, 90, 28); fila (60, 25, 55, 15);

Fila (55, 15, 68, 25); (68, 25, 68, 10);

Fila (68, 10, 75, 25); Fila (75, 25, 82, 10); 10, 82, 25); fila (82, 25, 95, 15);

fila (95, 15, 90, 25);

tamaño=tamañodeimagen(52, 7); , 98, 38); flecha=malloc(tamaño);

getimage(52, 7, 98, 38, flecha); /*Guardar la corona en el búfer*/

borrar ventana gráfica();

settextstyle(TRIPLEX_FONT,HORIZ_DIR,4);

setusercharsize(3,1,1,1);

setfillstyle(1, 4);

for(I = 0;i<=7;i++)a[I]= 1;

for(I = 0;i<=14 ;i++)b[ I]= 1;

for(I = 0;i<=23;i++)c[I]= 1;

for(I = 0 ;i<=8;i++) line(125,i*35+5,525,i*35+5);/*Dibujar un tablero de ajedrez*/

for(I = 0;i& lt=8;i++) line (125+i* 50, 5, 125+i*50, 285);

Prueba (1); /*Llamar a la función recursiva*/

Delay(3000);

closegraph();

Gratis(flecha);

}