其他典型算法之矩阵应用-专项训练浙江2022届选考专用(教师版)_第1页
其他典型算法之矩阵应用-专项训练浙江2022届选考专用(教师版)_第2页
其他典型算法之矩阵应用-专项训练浙江2022届选考专用(教师版)_第3页
其他典型算法之矩阵应用-专项训练浙江2022届选考专用(教师版)_第4页
其他典型算法之矩阵应用-专项训练浙江2022届选考专用(教师版)_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、其他典型算法之矩阵应用【例1】 把矩阵A的行和列互相交换所产生的矩阵称为A的转置矩阵,这一过程称为矩阵的转置,如 。以下VB6程序实现矩阵的转置,请在划线处填入正确的语句实现功能。Const m = 4Const n = 5Dim a(1 To m * n) As IntegerDim b(1 To m * n) As IntegerPrivate Sub Command1_Click()Dim i As Integer, j As IntegerList1.ClearList2.ClearRandomizeFor i = 1 To m * n生成源矩阵a(i) = Int(Rnd() * 8

2、9 + 10)NextFor i = 1 To m显示源矩阵s = For j = 1 To n s =NextList1.AddItem sNextFor i = 1 To n 生成并显示转置矩阵s = For j = 1 To mb(i - 1) * m + j) =s = s + Str(b(i - 1) * m + j)NextList2.AddItem sNextEnd Sub答案:s+Str(a(i-1)*n+j)a(j-1)*n+i)解析:本程序用一维数组a保存矩阵数据Amn。转置后的矩阵为Anm,对于矩阵中的元素aij,对应一维数组元素为a(i-1)*n+j),转置后对应的元素

3、是aji,对应一维数组元素为a(j-1)*m+i)。因此,处应填入的语句是s + Str(a(i - 1) * n + j),处应填入的语句是a(j - 1) * n + i)。【例2】.(201711浙江选考)由数组a生成数组b的方法描述如下:(1)将数组a中的n个元素依次分割出若干个数据块,每个数据块有mm个元素,m最大值为8,最小值为2。分割时,按尽可能大的数据块进行分割。(2)对每个分割出的数据块用“方阵转换法”进行转换,每次转换后得到的数据块依次存储在数据b中。(3)数组a分割后的剩余元素(个数小于4),直接依序存储到数组b中。例如n=140时,可依次分割出3个数据块,元素的个数分别

4、为64(88)、64(88)、9(33),剩余元素为3个。“方阵转换法”过程如下:将数据块中mm个元素按行序排列成一个数字方阵,从该数字方阵中按列序得到转换后元素的次序。以33数据块为例,转换过程如下图所示:小明依据上述描述设计了如下VB程序。请回答下列问题:(1)当n=120时,分割出的第3个数据块元素个数为。(2)请在划线处填入合适的代码。Const n = 120Dim a(1 To n) As IntegerDim b(1 To n) As IntegerPrivate Sub Command1_Click()Dim m As Integer, i As IntegerDim Star

5、t As Integer当前未分割数据的第1个元素下标Dim Left As Integer当前未分割数据的个数Dim pa As Integer数组a的下标Dim pb As Integer数组b的下标读取n个转换前的数据,依次存储到a(1)、a(2)、a(n)中,代码略m = 8Start = 1Left = nDo While Left 3If Left m * m Thenm =Elsepa = Startpb = StartFor i = 1 To m * mb(pb) = a(pa)pb = pb + 1If i Mod m = 0 ThenElse pa = pa + mEnd

6、IfNext iStart = Start + m * mEnd IfLoopFor i = Start To nb(i) = a(i)Next i依次输出转换后数据b(1)、b(2)、b(n)中,代码略End Sub答案: (1)4(2)m-1或intsqr(left) pa=pa-m* (m-1)+1或pa=Start+imleft=left-m* m解析: (1)n=120时,可依次分割出 3 个数据块,元素的个数分别为 64(88)、49(77)、4(22),剩余元素为 3 个。所以第 3 个数据块为 4 个元素。(2)剩余数量 Left =0 And c=xy(1) And j=xy

7、(2) And i=0And Mid(s,i,1)=x1 And i=y1 And j=y2 Thenb(i-1) n+j)=Elseb(i-1) n+j)=a(i-1) n+j)End IfNext jNext iFor i=1 To n2line=line+adj(Str(b(i),3)If ThenList2.AddItem lineline= End IfNext iEnd Sub答案 (1)8(2)value=value 10+Val(Mid(s,i,1)a(i-1) n+y1+y2-j)i Mod n=0解析 (1)a(12)即为第2行第4列的数组元素,故a(12)的值为8。(2)

8、第空考查遍历过程中,把数字字串转换成十进制数值,代码形式“变量名=变量名*R+当前分离得到的数字”,R表示不同的进制,此处R为10。故处代码应为“value=value 10+Val(Mid(s,i,1)”。通过两层循环控制数组元素赋值,变量i控制行,j控制列,第(i,j)位置元素对应一维数组中的元素下标为(i-1) n+j,第题主要考察二维方阵行列位置到一维数组下标之间的转换,方阵第(i,j)位置元素应赋值为方阵第(i,y1+y2-j)位置元素,故处代码应为“a(i-1) n+y1+y2-j)”。一维数组以二维方阵形式输出,每行输出n个元素,第空主要考查输出时的控制条件,当循环变量i值是n的

9、倍数时需输出一行值,并清空line;否则,把a(i)拼接到line中,故处代码应为“i Mod n=0”。3.小王设计了一个顺时针旋转矩阵的程序,其功能为:运行程序时,在文本框Text1中输入矩阵规模n,点击“产生矩阵”按钮Command1,在列表框List1中显示一个nn的矩阵,该矩阵数据由从1开始的连续自然数组成。点击“旋转矩阵”按钮Command2,该矩阵顺时针旋转90度并显示在列表框List2中。此后,每点一次“旋转矩阵”按钮Command2,列表框List2中显示的矩阵顺时针旋转90度。程序运行界面如图所示。(1)运行程序,在文本框Text1中输入5,点击“产生矩阵”按钮Comman

10、d1,再连续点击三次Command2按钮,则列表框List2中第一行显示的内容是。(2)实现此程序的代码如下,请在划线处填入合适的代码。Dim n As Integer,st As StringDim a(1 To 100) As IntegerDim b(1 To 100) As IntegerPrivate Sub Command1_Click()n=Val(Text1.Text)For i=1 To n na(i)=iNext iFor i=1 To nst= For j=1 To nst=st+adj(Str(a(i-1) n+j),3)Next jList1.AddItem stNe

11、xt iEnd SubPrivate Sub Command2_Click()List2.ClearFor i=1 To nst= For j=1 To nb(i-1) n+j)=st=st+adj(Str(b(i-1) n+j),3)Next jList2.AddItem stNext iFor i=1 To n na(i)=Next iEnd Subadj函数的功能:在字符串a前加入适当的空格,使a的长度为n位Function adj(a As String,n As Integer) As StringDim sa As Stringna=Len(a):sa=aFor i=1 To n-

12、nasa= +saNext iadj=End Function答案 (1)510152025(2)a(n-j) n+i)b(i)sa解析 (1)略(2)处双重循环功能是对矩阵顺时针旋转90度。数组a存放旋转前数据,数组b存放旋转后数据,变量i表示旋转后数据的行号,j表示列号。通过下表可以找出旋转前后行列变化的规律(以n=3为例):i=n-j+1,j=i旋转后行列号(i,j)旋转前行列号(1,1)(1,3)(1,2)(2,3)(1,3)(3,3)(2,1)(1,2)(2,2)(2,2)(2,3)(3,2)所以处填a(n-j) n+i)。处循环把数组b中的数据存入a,为下一次旋转作准备,所以处填b

13、(i)。处给自定义函数返回结果。4.皇后的势力范围。在国际象棋,皇后的攻击范围是经过所在位置的任何直线和对角线,如图所示:用VB设计一自定义函数,给定皇后所在位置p1和对方所在棋子位置p2(位置编号如上图所示,编号从左到右,从上到下,左上起第1格为),判断皇后是否可以攻击对方棋子,如果可以返回true,不行则返回false。程序如下,请在划线处填入正确的语句。Function judge(p1 As Integer,p2 As Integer) As BooleanDim f As Boolean,x1 As Integer,y1 As IntegerDim x2 As Integer,y2 As Integerx1=p1 Mod 8y1=p18x2=p2 Mod 8y2=p28If x1=x2 Or y1=y2 Or The

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论