演算法導論第三版 10 1 6習題答案

2021-10-01 04:59:47 字數 564 閱讀 1911

10.1-6

答案:

設定兩個棧為s1和s2,那麼s1用來enqueue(),s2用來dequeue(),當然s1需要用來為dequeue()操作作過渡,流程如下:

(1)首先將入隊元素1,2,3依次放進棧s1。此時s1元素從低到高為1,2,3,s2中暫時無元素。

(2)然後依次將1,2,3從s1中彈出並且放入s2中。此時s1棧空,s2中元素從低到高依次為3,2,1

(3)若此時進行還需要enqueue()操作將x,y入隊,那麼則直接將入隊元素放進s1中。此時s1中元素從低到高為x,y,s2中元素從低到高為3,2,1

(4)若此時需要進行dequeue()操作,則直接從s2中彈出乙個元素(當前彈出的元素應該為1);若s2空,則執行(2)操作,再執行dequeue()操作。此時s1棧空,s2中元素從低到高依次為y,x

所以此時的enqueue()的時間複雜度為o(1)

dequeue()時間複雜度可能是o(1),可能是o(n)。(當執行(4)操作分號前的操作時候為o(1),當執行分號後的操作時候為o(n)),所以dequeue()時間總的複雜度<=o(n)

演算法導論第三版 15 3 4習題答案

15.3 4 分析 capulet教授的觀點實質是是在求解乙個方案,該方案能使得每個新增的括號處的p i 1 p k p j 數乘次數的和最小。而矩陣鏈乘實質上求解的是乙個方案,該方案能使整體的數乘次數的和最小。所以capulet教授的觀點不能總是得到最優解 答案 反例 矩陣a1 a2 a3的規模分...

演算法導論第三版習題5 2

正好僱傭一次說明第一次僱傭的就是所有應聘者中最好的,所以概率為1n 正好僱傭 n 次說明所有應聘者按優秀從低到高依次出現,第一位是最差的,概率為1n 第二位其次,概率為1n 1,所以整體概率為1n 正好僱傭兩次,說明第乙個應聘者不是最好的,概率為n 1n,第二個應聘者是最好的,概率為1n 1,所以概...

演算法導論第三版習題5 3

在進入迴圈前,先將在整個陣列中隨機選擇乙個數至於a 1 即可 permute in place a 1 n a.length 2 swap a 1 with a random 1,n 3 for i 2 to n 4 swap a i with a random i,n 第二步其概率為1n 後面一樣...