问题 问答题

[说明]
若矩阵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)

答案

参考答案:

解析:[问题1](1)A[i][0] (2)min=A[i][j] (3)A[i] [j]==min (4)A[p][j]<=min或min=A[P] [j][问题2](5)1,2,11本算法的基本思想是:对矩阵A逐行处理,求出每一行的最小值,对于这一行上等于最小值的那些元素,逐个判断该元素是否是所在列的最大元,如果是则打印输出。(1)由上下文可知min代表第i行的最小值,此处应对其赋初值:本行第一个元素;(2)遍历第i行后面的元素,若有元素比miu小,则应更新min的值;(3)此处应挑出本行中取最小值的元素进行判断;(4)此循环用于判断min是否是本列的最大元。(5)所给矩阵中只有一个鞍点11,若行列号从。开始计,它位于第l行第2列。

选择题
选择题