El algoritmo para resolver el cubo de Rubik. Me refiero al algoritmo de programación informática. Lo mejor es tener el código fuente en C++ o C#.
Método específico:
Método 1;
/*Este programa está escrito de acuerdo con las reglas del cuadrado mágico presentadas anteriormente, pero solo puede encontrar números impares. Números del cuadrado de Rubik, después de la prueba, se puede calcular al nivel 508*/
#define N 7
#include
void. main()
{
int a[N][N],i,j,k;
for(i=0;i for(j=0;j { a[i][ j]=0 ; /*Todos los elementos del chelín son 0*/ } j=(N-1)/2 /*Juzga la posición de j*/ a[0][j]=1; /*Coloque 1 en la columna central de la primera fila*/ for(k=2;k<=N*N ;k++) /*Y luego comienza a procesar desde 2*/ { i=i-1 /*El número de filas almacenadas es 1 menos que el número anterior*/ j=j+1; /*La columna almacenada es 1 más que el número de columnas del número anterior*/ if((i<0)&&(j= =N)) /*El número anterior es En la primera fila y columna N, coloque el siguiente número debajo del número anterior*/ { i=i+2; j =j-1; } else { if(i<0) / *Cuando el número de filas se reduce a la primera fila, regresa a la última fila*/ i=N-1; if(j>N-1) /* Cuando se agrega el número de columnas a la última fila, regrese a la primera línea*/ j=0; } if(a[i ][j]==0) /*Si el elemento es 0, continuar ejecutando el programa*/ a[i][j]=k; else /* Si el elemento no es 0, significa que se ha ocupado la posición del número a completar, entonces el número se coloca debajo del número anterior*/ { i =i+2; j=j-1; a[i][j]=k; } } for(i=0;i { for(j=0;j printf("%5d",a[i] [j]); printf("\n\n"); } } Método 2: /* Esto lo proporciona el internauta qfyzy para ayudarme a encontrar el error, se puede calcular hasta el nivel 99 */ #define N 7 #include void main() { int a[N][N]={0},i=0,j,k; / *Todos los elementos del chelín son 0*/ > j=(N-1)/2; i=0; for(k=1;k<=N*N;) /*Iniciar procesamiento */ { if((i<0)&&(j==N)) /*Cuando el número anterior es la primera fila y columna N, coloque el siguiente número Colóquelo debajo del número anterior*/ { i=i+2; j=j-1; } else if(i<0) /*Cuando el número de filas se reduce a la primera fila, regresa a la última fila*/ i=N-1; p> else if(j>N-1) /*Cuando el número de columnas se agrega a la última fila, regresa a la primera fila*/ j=0; else if(!a [i][j]){ /*Si el elemento es 0, continúa ejecutando el programa*/ a[i][j]=k++; > i=i-1 ; j=j+1; } else /*Si el elemento no es 0, significa que la posición del número a llenar ha sido ocupada, entonces el número se coloca debajo del número anterior*/ { i=i+2; j=j-1; } } for(i=0;i { for(j=0;j printf("%5d",a[i][j]); printf("\n \n"); } }