En la siguiente matriz de Cubos de Rubik de 5×5, la suma de los elementos en cada fila, columna y diagonal es igual. Intente escribir un programa para convertir estos Cubos de Rubik.
#includelt; stdio.hgt;
int main()
{
int a[ 100][ 100], x; /*inicialización**
int i, j, m, n, temp;
printf ("Salida de la matriz del cubo de Rubik n=");
scanf("d",amp;x);
mientras(x)
{
if(!(x2) ) p>
{printf("Ingresaste un número par, desafortunadamente este programa saldrá"
devuelve 0
}
else
{
for(i=0;ilt;x;i)
for(j=0;jlt;x;j) p>
a[i][j]=0
i=0
j=x/2; [j] =1;/*Rellene 1 en el medio de la primera línea */
for(temp=2;templt;=x*x;temp)/* Repita 24 veces y complete los 24 números restantes* /
{
m=i
n=j
i--; >
j ;
si(ilt;0)
i=x-1;
si(jgt;x-1)
j =0;
si(a[i][j]!= 0)
{i=m 1;
j= n;
}
a[i][j]=temp;
}
for(i=0; ilt; x; i )
{
for(j=0;jlt;x;j)
printf("4d", a[i][j) ]);
p>printf("\n");
}
}
printf("Generando la matriz del cubo de Rubik n=");
p>
scanf("d",amp;x);
}
devuelve 0;
}
este El programa solo funciona con números base, se explica a continuación:
N es un número impar
(1) Coloca 1 en el columna central de la primera fila; (2) Comience desde 2 hasta n × n, los números se almacenan secuencialmente de acuerdo con las siguientes reglas: Camine en una dirección de 45 °, como hacia la derecha y hacia arriba si el número de filas se almacena cada número. in es 1 menos el número de filas del número anterior, luego el número de columnas se incrementa en 1. Agregue 1 al número de columnas (3) Ajuste si el rango de filas y columnas excede el rango de la matriz. Por ejemplo, si 1 está en la fila 1, entonces 2 debe colocarse en la fila inferior y el número de columnas también se incrementa en 1 (4) si existe la posición numérica determinada por las reglas anteriores, o el número anterior es; la primera fila de la enésima columna, luego el siguiente número se coloca debajo del número anterior.
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3 p>p>
11 18 25 2 9