設想你拋一枚硬幣n次,你期望看到的連續正面的最長序列是多長?
這是演算法導論第四章裡的乙個問題,今天看了好久,才明白過來,在這裡做個記錄。
書上從兩個不同的角度分析了這個問題,乙個是從概率的角度,通過計算這個序列長度的上界和下界推導出序列長度,乙個是利用書上所說的指示隨機變數(indicator random variable)的角度(個人理解就是期望),去分析。前者太複雜了,看了一半就暈了,這裡只分析一下第二種的方法。
定義xik表示序列長度至少為k的序列開始於第i次拋硬幣的概率。
那麼,這個長度至少為k的序列出現次數的期望就是:e[x1k+x2k+...+x(n-k+1)k]
這裡的n-k+1是總長為n的序列中,長度為k的序列的個數。
這裡,xik很好算,就是1/2^k。
所以,這個期望算出來就是(n-k+1)/(2^k)。
因此,我們就可以通過代入不同的k值,計算出長度為k的序列的期望數目。
當k=c lg n時,計算出來期望可以寫成o(1/n^(c-1))。
當c較大時,期望就會很小,那麼它就不大可能發生;當c很小,比如c<1/2時,期望就會很大,這說明它很可能發生。因此可以得到結論這個連續正面的最長序列的期望就是o(lg n)
最長序列問題,n皇后問題
輸入輸出 題目 最大子列和 題目 n皇后問題 題目 圖的著色問題 給定乙個長度為n的數列,求數值嚴格單調遞增的子串行的長度最長是多少。輸入格式 第一行包含整數n。第二行包含n個整數,表示完整序列。輸出格式 輸出乙個整數,表示最大長度。資料範圍 1 n 1000,10 9 數列中的數 10 9 輸入樣...
最長連續序列
題目 給定乙個未排序的整數陣列,找出最長連續序列的長度。例子 給出陣列 100,4,200,1,3,2 這個最長的連續序列是 1,2,3,4 返回所求長度 4。挑戰 要求你的演算法複雜度為o n 方法 將序列中的所有數存到乙個unordered set中。對於序列裡任意乙個數a i 我們可以通過se...
最長連續序列
給定乙個未排序的整數陣列,找出最長連續序列的長度。要求演算法的時間複雜度為 o n 示例 1,2,3,4 它的長度為 4。思路 用乙個字典儲存中間值遍歷陣列,對於數字i,找到的i 1和i 1的對應的值值,如果不存在則記為0。然後把我的值值設為i 1,i 1個的值值之和,並加1,相當於連線起來。同時置...