/**
* 求一个矩阵的鞍点,即在行上最小而在列上最大的点
*/
public class SaddlePiont {
public static void main(String[] args) {
int[][] arr = new int[2][2];
// 随机数生成器
Random random = new Random();
// 随机生成数字
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
arr[i][j] = random.nextInt(100);
}
}
// 打印数字
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
// 求鞍点
getSaddlePoints(arr);
}
/**
* 求鞍点
*/
public static void getSaddlePoints(int[][] arr) {
// 鞍点存在标志
int flag = 0;
int min, maxj, k;
int row = arr.length;
for (int i = 0; i < row; i++) {
min = arr[i][0];
maxj = 0;
// 获得行最小
for (int j = 1; j < arr[i].length; j++) {
// 将行最小数的列号赋给maxj
if (min > arr[i][j]) {
min = arr[i][j];
maxj = j;
}
}
// 获得列最大
for (k = 0; k < row; k++) {
if (arr[k][maxj] > min) {
break;
}
}
if (k < row) {
continue;
}
System.out.println("The result is a[" + i + "][" + maxj + "]=" + min);
flag = 1;
break;
}
if (flag == 0) {
System.out.println("not find!");
}
}
}