用java写一段代码,请输入矩阵的行数、列数和矩阵、阵的值,计算该矩阵的鞍点。若有鞍点,输出鞍点的位置(行下标和列下标);若无鞍点,输出”no saddle point“;若输入数据不合理,直接输出error。
时间: 2023-05-29 08:05:04 浏览: 105
以下是使用Java实现的代码:
import java.util.Scanner;
public class SaddlePoint {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入矩阵的行数:");
int rows = scanner.nextInt();
System.out.print("请输入矩阵的列数:");
int cols = scanner.nextInt();
if (rows <= 0 || cols <= 0) {
System.out.println("error");
return;
}
int[][] matrix = new int[rows][cols];
System.out.println("请输入矩阵的值:");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
matrix[i][j] = scanner.nextInt();
}
}
int saddleRow = -1;
int saddleCol = -1;
for (int i = 0; i < rows; i++) {
int minCol = 0;
for (int j = 1; j < cols; j++) {
if (matrix[i][j] < matrix[i][minCol]) {
minCol = j;
}
}
boolean isSaddle = true;
for (int k = 0; k < rows; k++) {
if (matrix[k][minCol] > matrix[i][minCol]) {
isSaddle = false;
break;
}
}
if (isSaddle) {
saddleRow = i;
saddleCol = minCol;
break;
}
}
if (saddleRow == -1 || saddleCol == -1) {
System.out.println("no saddle point");
} else {
System.out.printf("鞍点位置为(%d, %d)\n", saddleRow, saddleCol);
}
}
}
代码思路:
1. 首先读取输入的矩阵的行数和列数,如果行数或列数为非正数,则输出错误信息并结束程序。
2. 创建一个二维数组来存储矩阵的值,并读取输入的矩阵的值。
3. 针对每一行,找出该行的最小值所在的列号,然后判断该列的元素是否为该列的最大值。如果是,则说明该元素为鞍点,将其位置记录下来并结束循环。
4. 如果整个矩阵都没有鞍点,则输出“no saddle point”。
注意事项:
1. 鞍点指的是在某行上是最小值,而在该列上是最大值的元素。
2. 如果有多个鞍点,只需输出一个即可。
3. 如果输入的矩阵行数或列数为0或负数,则直接输出错误信息并结束程序。