2016年8月28日 星期日

商競104F-P41二搜+後巡(VB版參考)

這是依商業技藝競賽程式104年正式題第4題子題1稍微修改
資料檔第1列 一個數字 n ,代表 n 組資料,接著每組資料二列
每組的第1列一個數字x,每組第2列 x 個數字以逗號隔開
將讀入的 x 數字建成二元搜尋樹,然後依二元樹的後序拜訪 印出
參考程式碼:
 Dim dt(20) As Integer  '資料
 Dim chi(20, 1) As Integer '左、右子樹
 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    FileOpen(1, "in1.txt", OpenMode.Input)
   ' FileOpen(2, "in2.txt", OpenMode.Input) '本題只一 in1
    FileOpen(3, "out.txt", OpenMode.Output)
    For fn = 1 To 1 '本題只一 in1
       If fn > 1 Then PrintLine(3) '本題只一檔,若2檔,中間空一列
       Dim n As Short = LineInput(fn)  '每組第一列 N 組資料
       Do Until n = 0
           n -= 1
           Dim x As Short = LineInput(fn)  ' x 個節點
           For i = 0 To x - 1
               chi(i, 0) = -1 : chi(i, 1) = -1
           Next
           Dim id() = LineInput(fn).Split(",")
           dt(0) = id(0)
           For i = 1 To x - 1
               dt(i) = id(i)
               gbst(i, dt(i))
           Next
         ' For j = 0 To x - 1  '此段多印的 左樹、資料、右樹
         '     PrintLine(3, j & "  " & chi(j, 0) & ":" & dt(j) & ":" & chi(j, 1))
         ' Next
           po_t(chi(0, 0))
           po_t(chi(0, 1))
           PrintLine(3, dt(0) & "")
       Loop
    Next ' fn
   End
End Sub
Sub gbst(ByVal i, ByVal v)   '建二元搜尋樹
    Dim p As Integer = 0
    Dim dir As Integer  '0往左 或 1往右
    Do Until p = -1
       Dim pp As Integer = p
       If v < dt(p) Then  '往左
           dir = 0
           p = chi(p, 0)
       Else   '往右
           dir = 1
           p = chi(p, 1)
       End If
       If p = -1 Then
           chi(pp, dir) = i
           Return
       End If
    Loop
End Sub
Sub po_t(ByVal p As Integer) '後序列印
    If p = -1 Then Return
    po_t(chi(p, 0))
    po_t(chi(p, 1))
    Print(3, dt(p) & ",")

End Sub
/*範例輸入in1.txt
4
8
7,4,1,5,12,8,9,15
10
9,4,1,5,12,11,10,15,2,3
9
4,1,5,12,11,10,15,2,3
4
1,2,3,4
範例輸出out.txt
1,5,4,9,8,15,12,7
3,2,1,5,4,10,11,15,12,9
3,2,1,10,11,15,12,5,4
4,3,2,1
*/


Related Posts:

  • Z2A 7/12試題 Z2A 7/12 試題 參考解 F4P12 樂透 F5P22 最大公約數計算 M4P12 N! 尾數的0 M4P21 計程車費率計算 M4P42 數字反轉後相加 M6P01 大數三則運算 M6P02 階乘化成質因數 M6P03  求兩數之間的質數個… Read More
  • M2P12:102模P12樂透 及Z2A程式 8/29題目參考 M2P11 : 102模P11 字串中的阿拉伯數字   http://rs-vb.blogspot.tw/2016/10/z2am2p11.html M3P11 : 103模P11 判斷是否為質數 http://rs-vb.blogspot.tw/2016/10/z2am3p1… Read More
  • 103模 M3P31~M4P42 Public Class Form1                      &nbs… Read More
  • 商競103M-P31是否為樹(VB版參考)這是依商業技藝競賽程式103年模擬題第3題子題1稍微修改 資料檔第1列 一個數字 n ,代表 n 組資料{0<n<10},接著每組資料一列 每列是一個圖形的所有「邊」以空白隔開 ,每一個「邊」是由兩數字以逗號連接 判斷這個圖形是否為一棵樹,是印T否印F 參考程式碼:   &n… Read More
  • Z2AY7M3 練習-7 (17題題單及參考-4) 4/10(一)測驗題單 (題目名加上連結的表示範例完成) 假設由文字方塊輸入,呼叫 Function MyPxx( S As String ) As String後傳回要輸出的字串 以下只有M5P11附主程式部份,其餘類似 105模擬 M5P11 數學問題:質數 … Read More

0 意見:

張貼留言