Mira, si te entedí bien, aquí hay un ejemplo:
Código Java:
Ver originalimport java.util.Random;
public class Main {
int[][] matriz = new int[25][20];
// proceso para llenar la matriz
public void llenado() {
for (int i = 0; i < 25; i++) {
for (int j = 0; j < 20; j++) {
do {
matriz[i][j] = (int) (rnd.nextDouble() * 100.0);
} while (matriz[i][j] <= 0);
}
}
}
// proceso para encontrar el menor y el menor abs
public void menor() {
int abs = 0, ant = 0;
int absR = 0, absC = 0;
int antR = 0, antC = 0;
for (int i = 0; i < 25; i++) {
for (int j = 0; j < 20; j++) {
if (abs > matriz[i][j] || abs == 0) {
abs = matriz[i][j];
absR = i;
absC = j;
} else if ((ant > matriz[i][j] && abs < matriz[i][j])
|| ant == 0) {
ant = matriz[i][j];
antR = i;
antC = j;
}
}
}
System.
out.
println("\nEl menor absoluto es: " + (abs < 10 ? ("0" + abs) : (abs)) + " ubicado en Renglon="
+ absR + " Columna=" + absC);
System.
out.
println("\nEl menor anterior es: " + (ant < 10 ? ("0" + ant) : (ant)) + " ubicado en Renglon="
+ antR + " Columna=" + antC);
System.
out.
println("\nDistancia = " + ((Math.
max(antR, absR
) - Math.
min(antR, absR
)) + ((Math.
max( antC, absC
)) - (Math.
min(antC, absC
))))); }
// proceso para mostrar la matriz
public void mostrar() {
for (int i = 0; i < 25; i++) {
for (int j = 0; j < 20; j++) {
System.
out.
print((matriz
[i
][j
] < 10 ? ("0" + matriz
[i
][j
]) : matriz[i][j])
+ " ");
}
}
}
// codigo principal
public static void main
(String[] args
) { Main fin;
fin = new Main();
fin.llenado();
fin.mostrar();
fin.menor();
}
}
Pedí que no fueran iguales el menor absoluto y el menor anterior, por supuesto aumenté a 100 el rango de los aleatorios para hacerlo interesante y saqué la distancia en celdas como en tú ejemplo (incluyendo la celda de los números), aunque sería mejor la distancia euclidiana.
Espero te sirva, saludos!