標籤:
清華大學軟體2014機試
By 鐘桓
9月 24 2014 更新日期:9月 24 2014
今天剛剛機試完,乘者還沒忘記,把自己知道的記下來,也算是澤被後來人吧~~~
這次的機試題,相對來說,會更簡單一點,總共3題,時間是3小時。
1 超級幸運數
題目大致描寫敘述:
一個數字,若是僅僅含有1和4,這個數字就是幸運數,比如,14,114。可是514這種就不是了,由於含有其他數字。 若這個幸運數字中,1和4的數量同樣,那麼就是超級幸運數,比如14,1144,41等等。
題目要求,輸入一個n,n的範圍是[1,1e9],輸出[1,n]的最大超級幸運數。無解的話,輸出-1.
解題思路:
這個題目,當n<14,那麼顯然是無解的,其餘情況,最起碼還有14,事實上就是當>=14的時候,找一個最大的就好了,那麼最大有什麼規律,如果輸入的n有x位,當位元是奇數的時候,輸出(x-1)/2個4,和(x-1)/2個1,就好了。如果位元是偶數的話,那麼,要考慮一下一些情況了,由於輸出是不能大於n的,而且4和1的個數相等。還有,注意這種資料1000,它的輸出應該是41。
一些測試資料:
in: 20 out:14
in: 10 out: -1
in:1000 out: 41
2 移動小球
有一些小球,1,2,。。。,n;
有兩種操作,各自是
- 1 x y ,把x移動至y的左邊
- 2 x y ,把x移動至y的右邊
問得是,m次操作後,小球的順序是什麼..
事實上就是這種,原本1,2,3,4,5.(假設n=5的話)。經過1 1 4操作後,變成2 3 1 4 5
n資料範圍[1,1000]
m 資料範圍[1,200000]
解題思路:
雙向鏈表就行解決問題。再用一個數組儲存這些個節點的位置。
測試資料:
in :
5, 2 (輸入是 n m)
1 1 4 (表示操作,1,x, y)
2 4 2
out: 2 4 3 1 5;
3 整理書架
書店管理員要把書架上的書整理一下,事實上就是一排書,讓書的排序是依照書的高低,每本書有一個重量,重量越大,移動書時越費力,越累,讓我們求的是,總的移動書本的最小重量是多少。
給出的資料是:
5(書的數量)
1 2 5 3 3 (表示書的高度)
1 1 3 1 1 (標示書的重量)
輸出是2,
為什麼是2,由於這裡僅僅須要把第4,第5本書移動到第三本書的前面,就行保認證的有序,移動的重量和是2。
解題思路:
移動的重量和最小,事實上就是求,不移動重量和的最大是多少。那麼怎麼求不移動的最大重量和呢?事實上就是記錄下每本書的位置,高度,重量,然後依照高度排序,排序完後,依照節點的位置,來求一個最大子序列,只是這個最大子序列,大不在長度上,而是重量和上,這樣求出來的最大子序列重量和,就是不移動的最大重量和,總的重量減去它,就是我們要的答案
清華大學軟體2014機試