问题 问答题

请完成下列Java程序:查找一个矩阵中的鞍点,对于一个二维数组中的鞍点,该点位置上的元素在该行上最小,在该列上最大,也可能没有鞍点。数组大小为4行5列。 注意:请勿改动main()主方法和其他已有语句内容,仅在下划线处填入适当的语句。 public class ex30_2 {public static void main(String[] args) { int i, j, flag,m=4,n=5; int[] min=new int [4]; int[] max=new int [5]; int r[] []={{2,5,6,7,9}, {32,65,2,78,12}, {1,8,5,96,4}, {5,3,21,73,23}}; flag=0; for (i=0; i<m; i++) {//获取元素在该行上最大min[i]=r[i] [0];for (j=1; j<n; j++) if(r[i] [j]<min[i])___________________; } for (j = 0; j <n; j ++ ) { //获取同一元素在该列上最大max[j]=r[0] [j];for(i=l;i<m;i++) if(r[i] [j]>max[j])_______________________ } for(i=0;i<m;i++) for(j=0;j<n;j++) if(min[i]==max[j]){ System.out.print("("+i+", "+j+") : "+r[i] [j]); flag=1; } if(flag==0) System.out.println("没有鞍点!"); }}

答案

参考答案:

解析:min[i]=r[i][j] max[j]=r[i][j] 本题主要考查二维数组和for循环语句。解题关键是首先找出每行中最小的元素放在min数组中,再求出每列中最大的元素放在max数组中,再对两个数组中的每个数进行比较,如果有相同的,则这个数就是鞍点。本题中,第1个空,将每行最小的元素写给min数组;第2个空,将每列中最大的元素写给max数组。

选择题
单项选择题