python 编程找出矩阵中的幸运数字:说明,在一个给定的M*N的矩阵(矩阵中的取值0-1024,且各不相同),如果某一个元素的值在同一行中最小,并且在同一列中元素最大,那么该数字为幸运数字。
Posted on 2022-09-15 09:24 听雨轩! 阅读(253) 评论(0) 编辑 收藏 举报假设给定矩阵如下:
matrix=[[10,36,52],
[33,24,88],
[66,76,99]]
那么输出结果应为66(同时满足条件)
代码如下:
arr=[[10,36,52],
[33,24,88],
[66,76,99]]
#获取矩阵的元素个数,也就是行数
row=len(arr) #row=3
print(row)
#获取矩阵的列数数,也就是一维数组中的元素个数
col=len(arr[0]) #col=3
print(col)
#有多少行就有多少个行最小值,minrow[col],来进行统计col取值为0..row
#同理有多少个列就有多少个列最大值,用maxcol[col],来进行统计col取值为0..col
#先赋初值,题目是0到1024,那就可以让最小值初值为最大,最大值初值为最小
minrow=[1024]*row
for i in range(row):
print(minrow[i])
#这里就是把minrow[0]=1024,minrow[1]=1024,minrow[2]=1024
maxcol=[0]*col
for i in range(col):
print(maxcol[i])
#这里就是把mincol[0]=0,mincol[1]=0,mincol[2]=0
#这个容易理解,要求最小,我就拿个最大的和你比,如果比我小,让换成小的,直到找到最小,同理找到最大的也是这样
#i为行号,j为列号
for i in range(row):
for j in range(col):
print(i,j,arr[i][j])
minrow[i]=min(arr[i][j],minrow[i]) #第一次让arr[0,0]=10和minrow[0]=1024进行对比,取小的minrow[0]=10,以此类推
maxcol[j]=max(arr[i][j],maxcol[j]) #第一次让arr[0,0]=10和maxrow[0]=0进行对比,取大的maxrow[0]=10,以此类推,一个元素即是在行i里面,同时又在列j里面,所以同时比较
#通过上面比较,我们获取了minrow[0]=10,minrow[1]=24,minrow[2]=66,
#通过上面比较,我们获取了maxcol[0]=66,maxcol[1]=76,maxcol[3]=99
#接下来获取幸运数就容易了,两两比较有相等的就可以了
for i in range(row):
for j in range(col):
if minrow[i]==maxcol[j]:
print("幸运数是:",minrow[i])
运行结果: