Hola MVeros! No, esta vez no va de recursividad xD La cuestión es que quiero sacar los valores mínimos de una matriz, uno por uno, sin repetirlos (tiene que ver algo con grafos). La cuestión es que he programado lo siguiente:
int GetMinimumValue(int **M, int **V, int n, int *x, int *y){
int minimum, i, j;
minimum = INT_MAX;
for(i=0;i<n;i++){
for(j=0;j<n;j++){
if((M[i][j]<minimum) && (M[i][j]>0) && (V[i][j]!=1) && (V[j][i]!=1)){
minimum = M[i][j];
V[i][j] = 1;
V[j][i] = 1;
*x = i;
*y = j;
}
}
}
printf("MIN: %d\n", minimum);
return minimum;
}
Donde M es la matriz con valores y la V está inicializada a 0 salvo cuando un nodo ya se ha visitado, que se marca con un 1. Así, no volverá a ser visitado. Pero al ejecutar el código no me saca los mínimos en el orden correcto. La matriz en cuestión es algo tal que así:
0 5 14 10 0 0 0 0 0 0
5 0 19 0 0 3 0 0 0 0
14 19 0 6 6 5 8 0 0 0
10 0 6 0 11 0 0 0 0 0
0 0 6 11 0 0 10 0 7 0
0 3 5 0 0 0 9 8 0 0
0 0 8 0 10 9 0 3 8 14
0 0 0 0 0 8 3 0 0 2
0 0 0 0 7 0 8 0 0 3
0 0 0 0 0 0 14 2 3 0
Y los resultados que obtengo son:
MIN: 2
MIN: 3
MIN: 3
MIN: 7 <-------- Hay cincos y seises en la matriz, por qué no me los imprime??
Thx por adelantado y saludos!