Red de conocimiento informático - Aprendizaje de código fuente - Cómo determinar el cuadrado latino de un cuadrado latino

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);

}

}

}

}

}