Java编写程序 设有一个3O3的二维矩阵a,找出其鞍点(鞍点的元素值在该行上最大, 在该列上最小), 输出它的下标, 如果不存在鞍点,输出"NO"。设该矩阵为: 1 8 2 2 5 4 7 6 9
时间: 2024-10-20 21:12:06 浏览: 33
在Java中,你可以通过两层循环遍历这个三维数组(实际上这里是二维数组,因为303表示的是3x3的矩阵),同时记录每一行的最大值和每一列的最小值。对于每一对(行索引i,列索引j),如果当前元素a[i][j]大于等于其所在行的最大值,并且小于等于其所在列的最小值,那么它就是鞍点。如果找到这样的元素,就返回它的下标(i和j)。如果没有找到,最后输出"No"。
以下是一个简单的示例代码来解决这个问题:
```java
int[][][] matrix = {
{1, 8, 2},
{2, 5, 4},
{7, 6, 9}
};
boolean found = false;
int maxRow = Integer.MIN_VALUE, minCol = Integer.MAX_VALUE;
int rowMaxIndex = -1, colMinIndex = -1;
// 遍历矩阵
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
if (matrix[i][j] > maxRow) {
maxRow = matrix[i][j];
rowMaxIndex = i;
}
if (matrix[i][j] <= minCol) {
minCol = matrix[i][j];
colMinIndex = j;
}
}
// 检查是否有鞍点
if (rowMaxIndex != -1 && colMinIndex != -1 && matrix[rowMaxIndex][colMinIndex] == minCol) {
found = true;
break;
}
}
if (found) {
System.out.println("鞍点下标: [" + rowMaxIndex + ", " + colMinIndex + "]");
} else {
System.out.println("NO");
}
```
阅读全文