Cómo determinar el cuadrado latino de un cuadrado latino
Una matriz cuadrada latina es una matriz cuadrada de n x n con exactamente n elementos distintos, cada uno de los cuales tiene exactamente n elementos, y cada elemento aparece exactamente una vez en una fila y columna. El famoso matemático y físico Euler utilizó letras latinas como símbolos para los elementos de la matriz cuadrada latina, de ahí el nombre. Por ejemplo, la siguiente imagen es un cuadrado latino de 3x3:
3 2 1
2 1 3
1 3 2
Si La primera fila y columna del cuadrado latino están dispuestas en el orden de los elementos, lo que se denomina forma estándar del cuadrado latino. "1 2 3".
1 2 3
2 3 1
3 1 2
C
//t=0 no es un bloque latino //t=1 es un bloque latino//t=2 es un tipo estándar de bloque latino
#include
# incluir
int a[101][101],b[101][101],c[101][101];
# definir clr(x ) memset(x,0,sizeof(x))
int main()
{
int n,i,j,k ,t;
mientras(scanf("%d",&n)&&n)
{
t=1;k=1;
clr (a);clr(b);clr(c);
for(i=1;i<=n;i++)
for(j=1 ;j<= n;j++)
{
scanf("%d",&a[i][j]);
b[i] [a[i ][j]]++;
c[a[i][j ]][j]++;
}
for(i= 1;i<=n;i++)
for(j=1;j<=n;j++)
{
si( b[i] [j]! =1||c[i][j] =1)
{t=0;romper;}
}
/ * Determinar si es un tipo estándar*/
if(t){
for(i=1;i<=n;i++)
si(a [1][i]! =i||a[i][1]! =i)
{k=0;break;}
if(k)t= 2;
}
printf("%d\n",t);
}
}
}
}
}