国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

課后練習 2.2

2019-11-06 08:49:29
字體:
來源:轉載
供稿:網友

個人做的課后練習

書籍:算法設計與分析基礎(第三版)

習題2.2

二. a.正確 b.正確 c.錯誤 d.錯誤

三. a.n的20次方 b.n c.n的平方 log2(n) d.3的n次方 e. log2(n)

四. log(n) < n < n*log(n) < n的平方 < n的三次方 < 2的n次方 < n!

九. a.線性對數 b.線性

十. a.n b.1 c.n d.log(n)

十一. 因為我們不知道到底假幣是比真幣輕了還是重了。所以我們在此,把所有的硬幣平均分成了三組。然后,我們再分別討論可能出現的各種情況。假設總的硬幣數目是n。 1. n = 3*k 剛好是三的整數倍,我們可以把硬幣分成3堆,每一堆k個。然后我們只需稱兩次,就可以確定到底有假幣到底是輕了還是重要。(分三堆,主要是為了構造成兩個正確的樣本和一個不正確的樣本,從而確定不正確樣本到底是輕了還是重了) 2. n = 3*k + 1或2 我們可以把硬幣分成4堆,前三堆的每堆有k個,最后一堆只有1或2個。然后按照1.中的方法進行操作。如果發現兩次的稱量都是相等的話。我們就可以確認有問題的硬幣在最后一堆那里,然后我們只需要從沒有問題的前三堆硬幣那里,取出與第四堆等價的硬幣,然后再稱量一次,就可以確認假幣到底是輕了還是重了。

十二. 墻上的門 假設我們一開始所處的位置為0,而向左取正,向右取負。 1.假設我們只往一個方向走,顯然,如果門在另一個方向我們就永遠無法遇到門。 2.所以我們可以要不停的往返走,這樣我們才能遇到門。 如果我們采取的策略是: 0 1 -1 2 -2 3 -3 4 -4 … 我們可以列出移動步數的數列: 0 1 2 3 4 5 6 7 8 … 移動步數的和為:S(n)=(2n-1)*n;S(-n)=(2n+1)*n 所以這些都是 O(n*n)的算法。

如果我們嘗試采取走多一點再折返: 0 1 -2 3 -4 5 -6 7 -8 9 -10… 我們可以寫出移動的步數的數列: 0 1 3 5 7 9 11 13 15 17 19… 移動步數的和為:S(n)=n*n 所以一樣也是O(n*n)的算法。

如果我們選擇一下類似的策略: 0 k -k*k k*k*k -k*k*k*k … 最終我們得出的求和公式大概就為:S(n)=n*n/k 因為,n的值可以取無限大,所以算法依然是屬于O(n*n)類型的。

顯然我們要跳出乘法的思維限制。 如果我們選擇每逢 2的n次方 往反方向行走。 0 2 -4 8 -16 32 -64 128… 我們可以得到移動步數的數列: 0 2 6 12 24 48 96 192… 移動步數的和為:S(n)=3*n-4 所以,滿足O(n)

再進一步思考一下,假設我們每逢 k的n次方 就往反方向行走。 我們得到移動步數和的式子為:S(n)=((2+k)n-n-2k)/(k-1)

但是,我們還有沒有更加穩當的策略呢? 我個人想了想,我覺得還是有的,如果我們選擇 每逢n! 就往反方向走。至于求和公式,暫時以我的能力我算不出來。但是我感覺當n趨向無窮的時候,這種方法的效率顯然要比以上的幾種做法都要高。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永安市| 天气| 东乌珠穆沁旗| 太仆寺旗| 洛阳市| 米泉市| 高雄市| 鲜城| 邯郸市| 大新县| 香港| 安岳县| 新巴尔虎左旗| 周宁县| 靖安县| 淄博市| 武平县| 海兴县| 永善县| 项城市| 安吉县| 怀柔区| 开封市| 丰台区| 兰西县| 饶平县| 子长县| 寿阳县| 漳浦县| 鄱阳县| 谷城县| 金门县| 翼城县| 呼和浩特市| 佛冈县| 宝坻区| 望都县| 陕西省| 新昌县| 满城县| 如皋市|