java编程:找出一个二维数组的鞍点,即该位置上的元素在该行上最大,在该列上最小。一个二维数组可能没有鞍点。如果有,那么只有一个鞍点。
时间: 2023-11-06 12:00:56 浏览: 106
好的,这是一个编程问题,我可以回答。可以通过双重循环遍历二维数组,先找每行最大值,再遍历每列找最小值,如果某个元素的值既是所在行的最大值又是所在列的最小值,那么它就是鞍点。如果遍历结束,没有找到鞍点,则说明该二维数组没有鞍点。您可以参考以下代码:
```java
public static void findSaddlePoint(int[][] arr) {
int rowLength = arr.length;//行
int colLength = arr[0].length;//列
int rowMax = 0;//行最大值
int colMin = 0;//列最小值
int saddleI = -1;//鞍点所在行
int saddleJ = -1;//鞍点所在列
boolean hasSaddle = false;//是否有鞍点
for (int i = 0; i < rowLength; i++) {
rowMax = arr[i][0];//每行第一个数
for (int j = 1; j < colLength; j++) {
if (arr[i][j] > rowMax) {//找出每行的最大值
rowMax = arr[i][j];
}
}
for (int j = 0; j < colLength; j++) {
colMin = arr[0][j];//每列第一个数
for (int k = 1; k < rowLength; k++) {
if (arr[k][j] < colMin) {//找出每列的最小值
colMin = arr[k][j];
}
}
if (arr[i][j] == rowMax && arr[i][j] == colMin) {//判断是否是鞍点
saddleI = i;
saddleJ = j;
hasSaddle = true;
}
}
}
if (hasSaddle) {
System.out.println("鞍点坐标为:(" + saddleI + "," + saddleJ + ")");
} else {
System.out.println("没有鞍点");
}
}
```
您可以调用该方法并传入一个二维数组,程序会输出鞍点的坐标或者提示没有鞍点。
阅读全文