JAVA编程求给定矩阵的全部局部极大值及其所在的位置。
时间: 2024-05-05 10:16:34 浏览: 111
如何求最大值以及所在数组里的位置
5星 · 资源好评率100%
以下是一个示例代码,可以找到给定矩阵的所有局部极大值及其位置:
```java
public class LocalMaximaFinder {
public static void main(String[] args) {
int[][] matrix = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 8, 7, 6},
{5, 4, 3, 2}
};
List<Pair<Integer, Integer>> localMaxima = findLocalMaxima(matrix);
System.out.println("Local Maxima:");
for (Pair<Integer, Integer> maxima : localMaxima) {
System.out.println("Value: " + matrix[maxima.getKey()][maxima.getValue()] +
" Position: (" + maxima.getKey() + ", " + maxima.getValue() + ")");
}
}
public static List<Pair<Integer, Integer>> findLocalMaxima(int[][] matrix) {
List<Pair<Integer, Integer>> localMaxima = new ArrayList<>();
int rows = matrix.length;
int cols = matrix[0].length;
for (int i = 1; i < rows - 1; i++) {
for (int j = 1; j < cols - 1; j++) {
int current = matrix[i][j];
if (current > matrix[i-1][j] && current > matrix[i+1][j] &&
current > matrix[i][j-1] && current > matrix[i][j+1]) {
localMaxima.add(new Pair<>(i, j));
}
}
}
return localMaxima;
}
}
```
该代码中的 `findLocalMaxima` 方法遍历矩阵中除边缘元素以外的所有元素,并检查当前元素是否大于其上、下、左、右的元素。如果是,则将其位置添加到局部极大值列表中。最后,该方法返回局部极大值列表。注意,该方法假设矩阵是方形的,如果矩阵不是方形的,需要进行一些修改。
阅读全文