其他典型算法之矩陣應(yīng)用-專項(xiàng)訓(xùn)練浙江2022屆選考專用(教師版)_第1頁
其他典型算法之矩陣應(yīng)用-專項(xiàng)訓(xùn)練浙江2022屆選考專用(教師版)_第2頁
其他典型算法之矩陣應(yīng)用-專項(xiàng)訓(xùn)練浙江2022屆選考專用(教師版)_第3頁
其他典型算法之矩陣應(yīng)用-專項(xiàng)訓(xùn)練浙江2022屆選考專用(教師版)_第4頁
其他典型算法之矩陣應(yīng)用-專項(xiàng)訓(xùn)練浙江2022屆選考專用(教師版)_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、其他典型算法之矩陣應(yīng)用【例1】 把矩陣A的行和列互相交換所產(chǎn)生的矩陣稱為A的轉(zhuǎn)置矩陣,這一過程稱為矩陣的轉(zhuǎn)置,如 。以下VB6程序?qū)崿F(xiàn)矩陣的轉(zhuǎn)置,請(qǐng)?jiān)趧澗€處填入正確的語句實(shí)現(xiàn)功能。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 生成并顯示轉(zhuǎ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)解析:本程序用一維數(shù)組a保存矩陣數(shù)據(jù)Amn。轉(zhuǎn)置后的矩陣為Anm,對(duì)于矩陣中的元素aij,對(duì)應(yīng)一維數(shù)組元素為a(i-1)*n+j),轉(zhuǎn)置后對(duì)應(yīng)的元素

3、是aji,對(duì)應(yīng)一維數(shù)組元素為a(j-1)*m+i)。因此,處應(yīng)填入的語句是s + Str(a(i - 1) * n + j),處應(yīng)填入的語句是a(j - 1) * n + i)。【例2】.(201711浙江選考)由數(shù)組a生成數(shù)組b的方法描述如下:(1)將數(shù)組a中的n個(gè)元素依次分割出若干個(gè)數(shù)據(jù)塊,每個(gè)數(shù)據(jù)塊有mm個(gè)元素,m最大值為8,最小值為2。分割時(shí),按盡可能大的數(shù)據(jù)塊進(jìn)行分割。(2)對(duì)每個(gè)分割出的數(shù)據(jù)塊用“方陣轉(zhuǎn)換法”進(jìn)行轉(zhuǎn)換,每次轉(zhuǎn)換后得到的數(shù)據(jù)塊依次存儲(chǔ)在數(shù)據(jù)b中。(3)數(shù)組a分割后的剩余元素(個(gè)數(shù)小于4),直接依序存儲(chǔ)到數(shù)組b中。例如n=140時(shí),可依次分割出3個(gè)數(shù)據(jù)塊,元素的個(gè)數(shù)分別

4、為64(88)、64(88)、9(33),剩余元素為3個(gè)。“方陣轉(zhuǎn)換法”過程如下:將數(shù)據(jù)塊中mm個(gè)元素按行序排列成一個(gè)數(shù)字方陣,從該數(shù)字方陣中按列序得到轉(zhuǎn)換后元素的次序。以33數(shù)據(jù)塊為例,轉(zhuǎn)換過程如下圖所示:小明依據(jù)上述描述設(shè)計(jì)了如下VB程序。請(qǐng)回答下列問題:(1)當(dāng)n=120時(shí),分割出的第3個(gè)數(shù)據(jù)塊元素個(gè)數(shù)為。(2)請(qǐng)?jiān)趧澗€處填入合適的代碼。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當(dāng)前未分割數(shù)據(jù)的第1個(gè)元素下標(biāo)Dim Left As Integer當(dāng)前未分割數(shù)據(jù)的個(gè)數(shù)Dim pa As Integer數(shù)組a的下標(biāo)Dim pb As Integer數(shù)組b的下標(biāo)讀取n個(gè)轉(zhuǎn)換前的數(shù)據(jù),依次存儲(chǔ)到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依次輸出轉(zhuǎn)換后數(shù)據(jù)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時(shí),可依次分割出 3 個(gè)數(shù)據(jù)塊,元素的個(gè)數(shù)分別為 64(88)、49(77)、4(22),剩余元素為 3 個(gè)。所以第 3 個(gè)數(shù)據(jù)塊為 4 個(gè)元素。(2)剩余數(shù)量 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列的數(shù)組元素,故a(12)的值為8。(2)

8、第空考查遍歷過程中,把數(shù)字字串轉(zhuǎn)換成十進(jìn)制數(shù)值,代碼形式“變量名=變量名*R+當(dāng)前分離得到的數(shù)字”,R表示不同的進(jìn)制,此處R為10。故處代碼應(yīng)為“value=value 10+Val(Mid(s,i,1)”。通過兩層循環(huán)控制數(shù)組元素賦值,變量i控制行,j控制列,第(i,j)位置元素對(duì)應(yīng)一維數(shù)組中的元素下標(biāo)為(i-1) n+j,第題主要考察二維方陣行列位置到一維數(shù)組下標(biāo)之間的轉(zhuǎn)換,方陣第(i,j)位置元素應(yīng)賦值為方陣第(i,y1+y2-j)位置元素,故處代碼應(yīng)為“a(i-1) n+y1+y2-j)”。一維數(shù)組以二維方陣形式輸出,每行輸出n個(gè)元素,第空主要考查輸出時(shí)的控制條件,當(dāng)循環(huán)變量i值是n的

9、倍數(shù)時(shí)需輸出一行值,并清空line;否則,把a(bǔ)(i)拼接到line中,故處代碼應(yīng)為“i Mod n=0”。3.小王設(shè)計(jì)了一個(gè)順時(shí)針旋轉(zhuǎn)矩陣的程序,其功能為:運(yùn)行程序時(shí),在文本框Text1中輸入矩陣規(guī)模n,點(diǎn)擊“產(chǎn)生矩陣”按鈕Command1,在列表框List1中顯示一個(gè)nn的矩陣,該矩陣數(shù)據(jù)由從1開始的連續(xù)自然數(shù)組成。點(diǎn)擊“旋轉(zhuǎn)矩陣”按鈕Command2,該矩陣順時(shí)針旋轉(zhuǎn)90度并顯示在列表框List2中。此后,每點(diǎn)一次“旋轉(zhuǎn)矩陣”按鈕Command2,列表框List2中顯示的矩陣順時(shí)針旋轉(zhuǎn)90度。程序運(yùn)行界面如圖所示。(1)運(yùn)行程序,在文本框Text1中輸入5,點(diǎn)擊“產(chǎn)生矩陣”按鈕Comman

10、d1,再連續(xù)點(diǎn)擊三次Command2按鈕,則列表框List2中第一行顯示的內(nèi)容是。(2)實(shí)現(xiàn)此程序的代碼如下,請(qǐng)?jiān)趧澗€處填入合適的代碼。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函數(shù)的功能:在字符串a(chǎn)前加入適當(dāng)?shù)目崭?使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)處雙重循環(huán)功能是對(duì)矩陣順時(shí)針旋轉(zhuǎn)90度。數(shù)組a存放旋轉(zhuǎn)前數(shù)據(jù),數(shù)組b存放旋轉(zhuǎn)后數(shù)據(jù),變量i表示旋轉(zhuǎn)后數(shù)據(jù)的行號(hào),j表示列號(hào)。通過下表可以找出旋轉(zhuǎn)前后行列變化的規(guī)律(以n=3為例):i=n-j+1,j=i旋轉(zhuǎn)后行列號(hào)(i,j)旋轉(zhuǎn)前行列號(hào)(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)。處循環(huán)把數(shù)組b中的數(shù)據(jù)存入a,為下一次旋轉(zhuǎn)作準(zhǔn)備,所以處填b

13、(i)。處給自定義函數(shù)返回結(jié)果。4.皇后的勢力范圍。在國際象棋,皇后的攻擊范圍是經(jīng)過所在位置的任何直線和對(duì)角線,如圖所示:用VB設(shè)計(jì)一自定義函數(shù),給定皇后所在位置p1和對(duì)方所在棋子位置p2(位置編號(hào)如上圖所示,編號(hào)從左到右,從上到下,左上起第1格為),判斷皇后是否可以攻擊對(duì)方棋子,如果可以返回true,不行則返回false。程序如下,請(qǐng)?jiān)趧澗€處填入正確的語句。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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論