討論兩個演算法題

2021-10-07 03:28:45 字數 819 閱讀 9339

以下兩個問題假設自ram模型。在該模型下, 我們可以在常量時間內執行兩個o(log n)位整數的邏輯和算術運算,並且還可以在常量時間內讀取/寫入任何記憶體位址的連續o(logn)位。

問題一

給定隨機0/1序列b[0, … , n-1], 即對於0≤i≤n-1, b[i]=0或1。求解以下問題:

1.設計資料結構和演算法,使用盡可能小的空間,在常量時間內計算出b[0, i]中1的個數。

2.設計資料結構和演算法,使用盡可能小的空間,在常量時間內計算出b中第i個1的位置。

3.實現你提出的上述1和2問題的演算法,並使用給定輸入資料(檔案test_100mb.txt), 測試對於給定輸入求解上述問題實際所用空間和計算時間。(常量時間是指查詢的時間,讀取檔案時間不計入

問題二

給定取自字元表 z 中符號的序列s[0,-n-1], 即對於0≤i≤n-1, s[i]∈z。求解以下問題:

(a)設計資料結構和演算法,使用盡可能小的空間,在o(log n)時間內計算出符號c∈z 在s[0, i]中的出現次數,其中n是字元表z的大小

(b)實現你提出的上述(a)問題的演算法,並使用給定輸入資料(dna_100mb.txt),測試對於給定輸入求解上述問題實際所用空間和計算時間。

要求給出所設計演算法的空間占用和時間複雜度分析。實驗要求給出執行環境、編譯器及測試方法等資訊。

注意:給定輸入資料dna_100mb.txt的字元表大小不是4。

討論兩個天平稱重問題

問題一 有12個外形一致的金屬球,其中11個重量相同,另外有1個較輕。現在有一架天平,請用天平在3次以內找出那顆較輕的金屬球。問題二 有12個外形一致的金屬球,其中11個重量相同,另外有1個重量與其他的球不同,也許是輕,也許是重。現在有一架天平,請用天平在3次以內找出那顆重量與眾不同的金屬球。問題一...

演算法題 兩個佇列實現棧

思想 入棧 如果佇列q2為空,將資料追加到q1 如果佇列q2不為空,先將q2中資料從首部彈出追加到q1中,再將資料追加入q1 出棧 先將s1中資料從首部彈出追加到s2中,在從s2中從尾部彈出 coding utf 8 class stack object def init self self.q1 ...

兩個邏輯題

近期遇到兩個邏輯題,感覺有點好玩,發上來以作記錄。1 給定9個球,其中乙個質量比其他8個球要輕 或者重 給定乙個天平,問最少幾次可以把這個輕球找出來。2 給定一組大小長短不一的樂高積木,以及乙個天平,如何把這組樂高積木按照重量從輕到重排列出來。第一題,只要把9個球分成3組,兩組先比較,重量輕的一組,...