在矩阵中逐行寻找该行中的最小值,然后对其所在的列寻找最大值,如果该列上的最大值与该行上的最小值相等,则说明该元素是鞍点,将它所在行号和列号输出。
具体算法如下:
分析算法,外层for循环共执行n次,内层第一个for循环执行m次,第二个for循环最坏情况下执行n
次,所以,最坏情况下的时间复杂度为O(mn+n2)。分析算法,外层for循环共执行n次,内层第一个for循环执行m次,第二个for循环最坏情况下执行n
次,所以,最坏情况下的时间复杂度为O(mn+n2)。
(简答题)
若在矩阵A中存在一个元素ai,j(0≤i≤n-1,0≤j≤m-1),该元素是第i行元素中最小值且又是第j列元素中最大值,则称此元素为该矩阵的一个马鞍点。假设以二维数组存储矩阵A,试设计一个求该矩阵所有马鞍点的算法,并分析最坏情况下的时间复杂度。
正确答案
答案解析
略
相似试题
(简答题)
给定一个m×n的数值矩阵A,如果矩阵A中存在这样的一个元素A[i][j]满足条件:A[i][j]是第i行中值最小的元素,且又是第j列中值最大的元素,则称之为该矩阵的一个马鞍点。编写一个方法计算出m*n的矩阵A的所有马鞍点。
(单选题)
设矩阵A是一个对称矩阵,为了节省存储,将其下三角部分按行序存放在一维数组B[1,n(n-1)/2]中,对下三角部分中任一元素ai,j(i>=j),在一维数组B的下标位置k的值是()。
(单选题)
若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为()。(设a[0][0]位于数组的第一个位置上)
(填空题)
二维数组A[m][n]采用行序为主方式存储,每个元素占k个存储单位,并且第一个元素的存储地址是LOC(A[0][0]),则A[i][j]的地址是()。
(填空题)
已知二维数组A[m][n]采用行序为主方式存储,每个元素占k个存储单元,并且第一个元素的存储地址是LOC(A[0][0]),则A[i][j]的地址是()。
(单选题)
若有定义:inta[4][6];则能正确表示a数组中任一元素a[i][j](0
(单选题)
在数组A中,每一个数组元素A[i][j]占用3个存储字,行下标i从1到8,列下标j从1到10。所有数组元素相继存放于一个连续的存储空间中,则存放该数组至少需要的存储字数是()
(填空题)
在无向图G的邻接矩阵A中,若A[i][j]等于1,则A[j][i]等于()。
(单选题)
若有定义“inta[3][4],*p;”,则对数组元素a[i][j](0