Red de conocimiento informático - Conocimiento del nombre de dominio - ¡Urgente! ¡Matriz cuadrada de serpiente en lenguaje C!

¡Urgente! ¡Matriz cuadrada de serpiente en lenguaje C!

#include "conio.h"

#include

#include

# definir N 6

int mDir[4][2]={ {1,0},{-1,1},{0,1},{1,-1} }; Direcciones de llenado: izquierda, abajo a la izquierda, abajo, arriba a la derecha, llenado secuencial

void StepOn(int x,int y,int s[N][N],int len)

{ int i,j,d=0,n=0,begin=1;

mientras ( 1 )

{ si ( s[y][x]==0 )

{ n++; s[y][x]=n;

if ( start ) begin=0; //El punto de partida no se cuenta

else if ( ( d==0||d==2) ) d=(d+1)%4; //Si la dirección actual es hacia la izquierda o hacia abajo, gire inmediatamente

}

else //No está vacío

{ for ( i=0;i<4;i++ ) //Prueba 4 direcciones secuencialmente

if ( x+mDir[(d +i)% 4][0]=0 && y+mDir[(d+i)%4][1]

&& y+mDir[(d+i)%4][1]>=0 ) //No se puede exceder el rango de la matriz

if ( s[y+mDir[( d+i)%4] [1]][x+mDir[(d+i)%4][0]]==0 ) //Vacante legal encontrada

{ d=(d+ i)%4; x+= mDir[d][0]; y+=mDir[d][1]; //Modifica las coordenadas actuales y la dirección de viaje

if ( i>= 4 ) break; //4 direcciones No se puede encontrar espacio, fin

}

}

}

void main()

{ int s[N][N]={0},i,j;

StepOn(0,0,s,N);

para ( i=0;i< N;i++ ) { para ( j=0;j

getch ();

}

La idea de diseño de este programa es: mantener la dirección de llenado actual si hay una vacante en la dirección. de viaje, llénelo si cruza el límite o llena la dirección vertical u horizontal o si cruza el límite, girará inmediatamente hasta que se hayan probado todas las direcciones y no quede espacio.

El método de (d+i)%4 se utiliza en el programa para probar varias direcciones en el orden de la dirección actual d. No sólo mantiene la dirección actual sino que también prueba todas las direcciones no probadas.