演算法 圓桌分獎品問題(位元組跳動2019筆試)

2021-09-12 17:52:12 字數 525 閱讀 7908

圓桌n個人,每乙個人有乙個得分,相鄰兩人中得分高的人得到的獎品比得分低 的人多。每個人至少獲得乙個獎品,問一桌人至少需要準備多少獎品。

輸入: 人數n,圓桌上每個人的得分s (n維陣列)

輸出: 最少需要的獎品數m

因為是圓桌,得分陣列s應該看作迴圈列表。找出其中的區域性極小點,即得分比左右兩人都低的人,由迴圈列表的特性可知這樣的人至少存在乙個。我們給極小點乙個獎品,然後給極小點兩邊比極小點大的人2個獎品,在給2個獎品旁邊得分更高的人3個獎品,以此類推直到所有人都分到獎品;如果有人從不同的極小點開始計算得到獎品數不同,則取獎品數最多的計算方式。

8個人得分1,3,5,7,2,4,6,8,此時極小點有兩個(1和2),首先給得分為1和2的兩人1個獎品;3在1的旁邊,因此獲得2個獎品,同理5獲得3個獎品,得分為7的人按左邊1-3-5-7的順序應該獲得4個獎品,按右邊2-7的順序應該獲得2個獎品,取獎品多的一邊,即4個。同理,4,6,8分別獲得2,3,4個獎品,總共1+2+3+4+1+2+3+4=20個獎品。

演算法 割繩子問題(位元組跳動2019筆試)

演算法 割繩子問題 位元組跳動2019筆試 總共有n條長度不等繩子,可以任意切割,不能拼接。要求切割後得到m條長度相等的繩子,求問得到的m條繩子長度l的最大值 輸入 繩子條數n 表示繩子長度的n維陣列l,要求輸出的繩子長度m 輸出 長度最大值l 用n維陣列l的每乙個數除以1,2,3,m,得到m n個...

母牛生小牛問題 位元組跳動筆試題

母牛從3 7歲初每年會生產1頭母牛,10歲後死亡 10歲仍然存活 假設初始有1頭剛出生的母牛,請問第n年有多少頭母牛?年從第一年開始計數 注 第3年初會出生第一頭牛,故第3年有兩頭母牛 第5年初第3年出生的牛會生產,故第五年有5頭母牛。主類public static void main string...

集合合併問題 《位元組跳動》筆試第二題

題目 輸入 第一行輸入乙個數n,表示下邊有幾行。接下來輸入n行,每一行格式為1,2 3,4 5,6 輸出 將重疊部分進行合併的結果,按從小到大輸出。例如 修改 如下 import sys if name main n input q for i in range int n line sys.std...