PI-ITBA / 2024_02

Consultas 2C 2024
4 stars 0 forks source link

04/2023 #59

Open MaxiRamoss opened 1 month ago

MaxiRamoss commented 1 month ago
/*
Todos los elementos de la matriz están entre 1 y 3*N inclusive

Cada submatriz de 3x3 debe tener elementos sin repetir

Al sumar los elementos de cada submatriz de 3x3 se obtiene el mismo resultado
*/

#define N 6
#define SUBDIM 3

int valid(int m[][N], int fil, int col, int *firstSum){ //verifica que no repita, que esten entre uno y 3N y devuelve la suma
    int suma = 0;
    int vecAp[N*SUBDIM+1] = {0};
    for(int i=fil; i < fil+SUBDIM; i++){
        for(int j=col; j < col+SUBDIM; j++){
            if(m[i][j] < 1 || m[i][j] > 3*N){
                return 0;
            }
            if(vecAp[m[i][j]] == 1){
                return 0;
            }
            vecAp[m[i][j]] = 1;
            if(fil == 0 && col == 0){
                (*firstSum) += m[i][j];
                suma = *firstSum;
            }
            else{
            suma += m[i][j];
            }
        }
    }
    if(suma != *firstSum){
        return 0;
    }
    return 1;
}

int verifica(int m[][N]){
    int firstSum = 0;
    for(int i=0; i < N; i+=SUBDIM){ //selecciono fila del subcuadrado
        for(int j=0; j < N; j+=SUBDIM){
            if(!valid(m,i,j,&firstSum)){
                return 0;
            }
        }
    }
    return 1;
}
marcelogarberoglio commented 1 month ago

Corregido en la consulta