標籤:清華軟體 機試
清華大學軟體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機試