姓名:辛雅松 专业:电气工程及其自动化学号:15050341033
找一个n*m的二维数组的“鞍点”
1.掌握数组的声明和数组元素的引用
2.掌握定长数组和动态数组的使用
3.掌握数组的基本操作算法
4.掌握过程的定义和调用
二、实验内容
找一个n*m的二维数组的“鞍点”。“鞍点”是指它在本行中数值最大,在本列中数值最小。也可能在一个数组中找不到鞍点。输出鞍点的行、列号,如无鞍点则输出“无鞍点”。
三、实验步骤
Option Base 1
Private Sub form_Click()
Dim a() As Integer, i As Integer, j As Integer,k AsInteger
Dim max As Integer, column As Integer, find As Boolean
||生成二维数组
n = Me.Text1.Text
m = Me.Text2.Text
ReDim a(n, m)
Print n & "*" & m & "矩阵"
For i = 1 To n
For j = 1To m
a(i, j) = Int(Rnd * 9) + 1
Print a(i, j);
Next j
Next i
||此时数组里全是0,我们用一个双重循环来赋初值i—m,j—n.
Fori = 1 To n
max = a(i, 1)
column = 1
For j = 2 To m
If max < a(i, j) Then
max = a(i, j)
column = j
End If
Next j
For k = 1 To n
If max > a(k, column) Then
ExitFor
End If
Next k
If k = n + 1 Then 'k<=n表示max不是该列最小值,k=n+1表示max是该列最小值
Print "存在鞍点a(" & i & ","& col & ")=" & a(i, column)
find = True
End If
Nexti
If Not find Then
Print "鞍点元素不存在"
EndIf
End Sub
四、实验感想
分析:可以仿照本章例题,利用查找最值和排序的算法,对于矩阵的每一行完成以下操作:先求出每行的最大值,以及它所在的列,然后根据此最大值所在的列,判断该最大值是否是所在列的最小值,若是,则此数是要找的鞍点,则输出鞍点的行、列号。若遍历所有行没有找到鞍点,则输出“鞍点元素不存在”。
五、心得体会
选值时可以借鉴排序的方法,主要是如何将符合的鞍点表示出来。