給定n和k,k < = n。
在多少種方式中,我們可以從集合{1,2,...,n}中精確選擇'k'個不同的數字,從而對於每個選擇的數字'a'至少有一個'a-1','a + 1'也被選中? 與時間複雜度爲O(n * K)的動態規劃的解決方案是known.Can我們做的更好?從集合{1,2,...,n}中選擇K個不同的數字,使得
4
A
回答
3
是的,我們只需要做一些組合。
將運行定義爲連續整數的最大子集。我們讓r的範圍從1到floor(k/2)並且將r個子集的數目相加。我們採取(a)劃分運行長度時間的方法的數量(b)劃分運行之間的間隙的方法的數量。爲了計算具有給定運行次數r的子組的數量,我們採取(a)劃分運行長度時間的方法的數量。對於(a),將整數k劃分爲大於或等於2的整數r的整數的方式的數量是((k-2r +(r-1))個選擇(r-1))通過標準技術。對於(b),將整數n-k劃分爲r + 1個整數(其全部是非負的並且除了第一個和最後一個都是正的除外)的和的方式的數量是((n-k-(r) - 1)+ r)選擇r)。天真的是,這個公式需要O(k^2)的算術運算,但是如果我們用r-1的二項式係數來計算r的那個,那麼運行時間就變成O(k)的算術運算。
相關問題
- 1. 從MongoDB中選擇滿足N個條件的K個數據
- 2. 從一個集合中選擇N個隨機數
- 3. 遞歸獲得n個人和k個組的不同組合的數量
- 4. n在java中使用n和k的整數類型選擇k
- 5. 將數字n拆分爲k個不同數字的總和
- 6. 不同數字出現在n個不同數字的大小-k子集中的概率是多少?
- 7. 1概率N選擇k
- 8. python log n選擇k
- 9. 從數據庫中選擇N個項目,但在ASP.NET MVC中只顯示k(其中k <N)
- 10. 集合/數論:在n個集合的k個子集中,特定元素的出現次數爲
- 11. Wpf DataGrid綁定選擇從兩個集合相同的計數
- 12. 從n個排序數組中找出k個最小數字
- 13. 如何通過字段選擇k個不同的值?
- 14. 如何從n個數字列表中找到k個最大數字,前提是n> k
- 15. 從NHibernate的相關表中選擇不同的值集合
- 16. ,選擇N個不同值的行
- 17. LINQ關於從集合中選擇不同元素的建議
- 18. 從大的MongoDB集合中選擇每個第N個元素w/PHP?
- 19. 從集合中選擇計數
- 20. 從數組中選擇n個元素
- 21. Symfony2集合的選擇每個元素的不同選項
- 22. 組合公式「n!/((n-k)!* k!)」不起作用
- 23. 將兩個不同選擇的結果合併爲一個獲得結果集
- 24. 獲得集合的第n個元素
- 25. 如何從k個項目列表中生成所有n大小的集合?
- 26. 通過從N個列表中每次選擇一個數字找到N個列表中的第k個最大數字的高效算法
- 27. 從N個購買K個最小成本與價格不同
- 28. 準確k個整數的子集合?
- 29. 如何選擇集合而不是SqlToEntity中的集合集合?
- 30. 如何在jQuery集合中選擇第n個jQuery對象?
將n和K作爲輸入。我們必須準確地選擇k個不同的數字 – Abhi
** **如果你能證明的時間複雜度也是'Ω(N * K)',那麼時間複雜度將是'Θ(N * K)',這意味着你不能做得更好。 – Christos
你可以證明O(nk)算法(可能有一些改進)? –