用Java语言编写程序:找出一个二维数组中的鞍点,即该位置上的元素在该行上最大、在该列上最小。也可能没有鞍点
时间: 2023-11-06 13:16:05 浏览: 45
以下是用Java语言编写的程序,可以找出一个二维数组中的鞍点,如果没有鞍点则输出相应信息:
```java
public class FindSaddlePoint {
public static void main(String[] args) {
int[][] arr = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; // 测试用的二维数组
int rowCount = arr.length; // 数组的行数
int colCount = arr[0].length; // 数组的列数
boolean hasSaddlePoint = false; // 是否存在鞍点的标志
// 在每一行中查找最大值,并记录其列号
int[] maxInRow = new int[rowCount];
for (int i = 0; i < rowCount; i++) {
int max = arr[i][0];
int col = 0;
for (int j = 1; j < colCount; j++) {
if (arr[i][j] > max) {
max = arr[i][j];
col = j;
}
}
maxInRow[i] = col;
}
// 在每一列中查找最小值,并判断是否为鞍点
for (int j = 0; j < colCount; j++) {
int min = arr[0][j];
int row = 0;
for (int i = 1; i < rowCount; i++) {
if (arr[i][j] < min) {
min = arr[i][j];
row = i;
}
}
if (maxInRow[row] == j) { // 找到鞍点
System.out.println("鞍点为:" + arr[row][j]);
hasSaddlePoint = true;
}
}
if (!hasSaddlePoint) { // 没有鞍点
System.out.println("该二维数组中不存在鞍点!");
}
}
}
```
上述程序中,我们首先遍历每一行,找出每一行中的最大值,并记录其列号。然后再遍历每一列,找出每一列中的最小值,并与该行中最大值所在的列号进行比较,如果相等,则说明找到了一个鞍点。