用JAVA编程给定M行N列的整数矩阵A,如果A的非边界元素A[i][j]大于相邻的上下左右4个元素,那么就称元素A[i][j]是矩阵的局部极大值。求给定矩阵的全部局部极大值及其所在的位置。
时间: 2023-12-27 22:04:20 浏览: 107
代码如下:
```
public class LocalMaximum {
public static void main(String[] args) {
int[][] matrix = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}};
int m = matrix.length;
int n = matrix[0].length;
List<int[]> result = new ArrayList<>();
for (int i = 1; i < m - 1; i++) {
for (int j = 1; j < n - 1; j++) {
if (matrix[i][j] > matrix[i - 1][j] && matrix[i][j] > matrix[i + 1][j]
&& matrix[i][j] > matrix[i][j - 1] && matrix[i][j] > matrix[i][j + 1]) {
result.add(new int[]{i, j});
}
}
}
System.out.println("局部极大值的位置如下:");
for (int[] pos : result) {
System.out.println("(" + pos[0] + "," + pos[1] + ")");
}
}
}
```
解释:
首先,我们定义一个二维整数数组用来表示矩阵。然后,我们计算出矩阵的行数和列数。接下来,我们遍历矩阵中除了边界元素以外的所有元素,如果某个元素大于它周围的上下左右四个元素,那么就将该元素的位置加入到结果集中。最后,我们输出结果集中所有元素的位置。
注意:
1. 在遍历矩阵时,我们只需要遍历除了第一行、最后一行、第一列和最后一列以外的元素,因为边界上的元素没有四个相邻元素。
2. 在判断某个元素是否为局部极大值时,我们需要使用逻辑运算符“&&”,表示该元素必须同时大于上下左右四个元素。
3. 结果集使用List<int[]>类型,每个元素都是一个长度为2的数组,表示该元素的行和列。
阅读全文