请完成下列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("没有鞍点!");}}
请完成下列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("没有鞍点!");
}
}
相关考题:
阅读下列函数说明和C函数,回答问题1~2,将解答填入栏内。[说明]若矩阵Am×n中存在某个元素aij满足:aij…是第i行中最小值且是第j列中的最大值,则称该元素为矩阵A的一个鞍点。下面程序的功能是输出A中所有鞍点,其中参数A使用二维数组表示,m和n分别是矩阵A的行列数。[程序]void saddle (int A[ ] [ ], int m, int n){ int i,j,min;for (i=0;i <m;i + + ){ min: (1);for (j=1; j<n; j+ +)if(A[i][j]<min) (2);for (j=0; j<n; j+ +)if ((3)){ p=0;while (p<m(4))p+ +;if (p > = m)printf ("%d,%d,%d\n",i,j,min);}}}[问题1] 将函数代码中的(1)~(4)处补充完整[问题2]在上述代码的执行过程中,若A为矩阵,则调用saddle(A,3,3)后输出是(5)。
试题二(共15分)阅读以下说明和C函数,填充函数中的空缺,将解答填入答题纸的对应栏内。【说明】如果矩阵A中的元素A[i,j]满足条件:A[i,j]是第i行中值最小的元素,且又是第j列中值最大的元素,则称之为该矩阵的一个马鞍点。一个矩阵可能存在多个马鞍点,也可能不存在马鞍点。下面的函数求解并输出一个矩阵中的所有马鞍点,最后返回该矩阵中马鞍点的个数。【C函数】Int findSaddle(int a[][N],int M),{ /*a表示M行N列矩阵,N是宏定义符号常量量*/int row,column,i,k;int minElem;int count=0;/*count用于记录矩阵中马鞍点的个数*/for( row = 0;row (1) ;row++) {/*minElem用于表示第row行的最小元素值,其初值设为该行第0列的元素值*/(2) ;for( column = 1;column (3) ;column++)if( minElem a[row][column]) {minElem = a[row][column];}for(k=0;kN;k++)if(a[row][k]==minElem){/术对第row行的每个最小元素,判断其是否为所在列的最大元素*/for(i=0;i M;i++)if( (4) minElem) break;if(i=(5) ){printf("(%d,%d):%d\n",row,k,minElem);/*输出马鞍点*/count++;}/*if*/}/*if*/}/*for*/return count,}/*findSaddle*/
4、下面关于矩阵博弈鞍点的说法,不正确的是()A.任何一个矩阵博弈都至少存在一个鞍点B.鞍点对应的双方策略组合为纳什均衡C.如果一个矩阵博弈存在多个鞍点,这些鞍点的值相同D.矩阵博弈不一定存在鞍点
编写一个程序合理使用函数,输入m(0<m<10),n(2<n<10),随机生成m个有鞍点的n*n矩阵(每个随机数为包含在0~9之间的整数),输出这些矩阵(鞍点用红色输出)。 提示:矩阵鞍点是指矩阵中的某一点,既是行中的最大值,又是列中的最小值。 矩阵中不一定存在鞍点,也可能有多个鞍点。随机数函数参见《计算机基础与计算思维》6.3.5小节。
1、已知字符数组char str[25],其数组元素按下标依次为'a','b','c'...'y',请编写程序,按每行5个字符在屏幕上以矩阵形式打印出该数组,并计算位于该矩阵主对角线(从左上到右下)上的元素的ASCII码值和。