Open za0sec opened 1 year ago
No estás haciendo lo que pide el ejercicio. Y esto de marcar todo y después volver a recorrer creo que ya mencioné que está lejos de ser la mejor opción.
Perdon Marcelo, pero no comprendo porque no hago lo que pide el ejercicio. En cuanto a recorrer otra vez el vector de apariciones, es cierto, estoy buscando una manera de sacarlo.
¿En qué momento verificás que en la primer fila están los números entre 1 y N? ¿Y en la segunda entre N+1 y 2N? Lean bien los enunciados, incluídos los ejemplos.
Lo pense poniendo un vector de apariciones y al final de cada iteracion de i, comprobar si la suma de esos da N. Digamos que si en la primer fila no estan los numeros del 1 al 4, la suma daria 3 por ende no estan los 4 numeros. Lo mismo para cuando i este en la segunda fila, la suma tiene que valer 4. De esta manera, no estoy verificando ambas cosas a la vez? Tal vez no tiene sentido lo que hago pero en mi cabeza sonaba logico. Igualmente ahi corregi para que ese for, se siga haciendo desde (i*N).
int requirments(int mat[][N]){
int vecAp[N*N] = {0};
for(int i=0; i<N; i++){
for (int j=0; j<N; j++){
vecAp[mat[i][j]-1] = 1;
}
int sum=0;
for (int t=i*N; t<(N*(i+1)); t++)
sum += vecAp[t];
if (sum != N)
return 0;
}
return 1;
}
pero estás accediendo a vecAp sin validar el valor de mat[i][j]
Hola Marcelo, paso para correccion del ejercicio. Como esta de eficiencia? Tal vez tengo un for de mas. El ejercicio pedia lo siguiente:
Escribir una función que reciba una matriz cuadrada de dimensión N (N es una constante previamente definida) y retorne 1 si la misma cumple con las siguientes condiciones: 1) Contiene todos los números de 1 a N * N inclusive 2) En cada fila contiene números consecutivos, no necesariamente ordenados