马鞍点:如果矩阵A中存在这样一个元素A[i][j]满足下列条件:A[i][j]是第i行中值的最小元素,且又是第j列中值的最大元素,则称之为该矩阵的一个马鞍点。
public class House {
public static void main(String[] args) {
int[][] arr={{9,8,7},{1,2,6}};//输入数组,可以自己选择输入任何数组,以下代码都适用
//输出该数组
for(int i=0;i<arr.length;i++) {
for(int j=0;j<arr[i].length;j++) {
System.out.print(arr[i][j]+"\t");
}
System.out.println();
}
int flag,min,minCol;//定义三个变量,flag为判断判断变量,min为某一行的最小值,minCol为该最小值所在的列
for(int i=0;i<arr.length;i++) {//外层是每一行的循环
flag=0;//每一行循环都使flag为0,用在最后判断
min=arr[i][0];
minCol=0;
//该循环找出第i行的最小值
for(int j=0;j<arr[i].length;j++) {
if(arr[i][j]<min) {
min=arr[i][j];
minCol=j;
}
}
//判断该最小值是不是所在列的最大值,如果不是,令flag=1;
for(int k=0;k<arr.length;k++) {
if(min<arr[k][minCol])
flag=1;
}
//依据flag判断马鞍点条件是否成立,如果成立这输出该行的马鞍点
if(flag==0) {
System.out.println("马鞍点为第"+(i+1)+"行 第"+(minCol+1)+"列 大小为"+min);
}
}
}
}