跳到主要內容

發表文章

目前顯示的是 5月, 2018的文章

105商業類技藝競賽試題Problem3

*這兩題解題時間是前面問題一、二的加總,感謝 台灣商管教材研發學會 的教學影片 問題一、是否為堆積樹(Heap tree)或二元搜尋樹(Binary search tree) 判斷Heap Tree的條件為 左右子節點都比其父節點大/小 即為最大/最小堆積樹 判斷Binary Tree的條件為 左子節點都比其父節點小而右 子節點都比其父節點大 即為二元搜尋樹 所以重點在於,判斷節點的大小  Private Function FindMax(nodes() As Integer, root As Integer, upperBound As Integer) As Integer         If root > upperBound Then Return Integer.MinValue         Dim t As Integer = Math.Max(FindMax(nodes, 2 * root + 1, upperBound), FindMax(nodes, 2 * root + 2, upperBound))         Dim Max As Integer = Math.Max(nodes(root), t)         Return Max     End Function 以遞迴方式,每個節點都會看做Root點,以判斷最大堆積樹為例 Private Function isMaxHeap(nodes() As Integer) As Boolean         Dim U As Integer = nodes.GetUpperBound(0)         Dim i As Integer = 0         For i = 0 To U             If nodes(i) < FindMax(nod...

105商業類技藝競賽試題Problem2

問題二都是簡單的數學問題,須注意的重點如下 1.矩陣與Split:目前題目一直在用,做運算前處理 2.AND運算:並不用真的將10進位轉為2進位,就可以執行 3.GCD遞迴寫法 Problem 2 :數學問題 子題 1 : 網段 ID   ( 程式執行限制時間 : 2 秒 ) 13 分 IPv4 的 IP 位址為 32 位元資料,內容常表示成 4 個十進位數字,中間以點 (.) 隔開 ( 如 192.168.10.246) 那要如何從一個 IP 位址和子網路遮罩得知網段 ID 呢 ? 實際的情形是:當知道 IP 位址 和 子網路遮罩 ( 都是二進位數字 ) 之後,可使用一個 AND 的二進位邏輯運算,來求出網段 ID 。我們任選一個 IP 位址來做例子﹕ IP 位址: 139.175.153.252 換成二進位是﹕ 10001011.10101111.10011001.11111100 給予子網路遮罩是 255.255.0.0 ,換成二進位﹕ 11111111.11111111.00000000.00000000 然後將 IP 位址和子網路遮罩以   AND   運算﹕ 10001011.10101111.10011001.11111100 AND 11111111.11111111.00000000.00000000 得出﹕ 10001011.10101111.00000000.00000000 換成十進位就是 139.175.0.0 ,這個就是網段 ID 了。 範例 : 測試資料會有 IP 位址 / 子網路遮罩資訊,寫一程式計算網段 ID 。 IP 位址 192.168.10.65 11000000.10101000.00001010.010 00001 子網路遮罩 255.255.255.224 11111111.11111111.11111111.111 00000 網段 ID 192.168.10.64 11000000.10101000.00001010.010 00000 I...