0
A
回答
1
在評論中,我建議在深度k-1停止「通常的遞歸算法」,考慮到2級遞歸方案,其中每個外部遞歸步驟都是停止構建當前部件並開始構建下一個部件部分,每個內部遞歸步驟是決定將一些元素放入當前部分。這是一個相當不錯的方案,因爲它意味着在遞歸樹的底部生成單獨的k分區,因此如果需要,您可以立即在它們上操作它們,而不必將它們全部存儲到大數組中以便以後處理(當然如果你願意,你仍然可以這樣做)。這裏唯一的技巧就是確保你不會產生同樣的分區 - 特別是通過生成兩個包含相同部分的分區,但這些分區的順序不同。這可以通過強制對零件進行排序來避免。最簡單的方法是,無論何時開始構建新零件時,始終添加第一個(即最左邊的)可用元素 - 這可以確保分區中的零件將按其元素的最小位置排序。
但是,如果您不介意在存儲器中實例化k分區的完整列表,還有另一種我認爲更簡單的方法。下面應該足以幫你把一個簡單的遞歸算法一起:
考慮一些要素s S中S的每k分區是正好兩個類別之一:
- 出現S在與其他元素相同的部分。在這種情況下,從該部分刪除s給出S \ {s}的k分區。
- 單獨出現在零件中。在這種情況下,刪除整個部分給出了一個(k-1) - S \ {s}的分區。
在情況(1)中的所有分區可以通過將s添加到S \ {s}的k分區中的一個部分來形成,並且情況(2)中的所有分區可以通過將單獨的部分只包含s到s(s)的(k-1)分區。相信這會產生一次S的所有K分區。
在遞歸過程中,您需要考慮的唯一邊界情況是| S | == k - 在這種情況下,您需要返回包含k個單例集的單個分區。
相關問題
- 1. Textlocal:恰好
- 2. 我有一個數字列表,如何生成所有獨特的K分區?
- 3. 調度:分區是一個整數集成K個子集
- 4. 恰好執行一次cronjob一次
- 5. 6節點二叉樹,恰好2個恰好有1個孩子
- 6. 生成一個整數的所有組成k部分
- 7. 訪問Microsoft.SqlServer.Management.Smo.Server對象的成員恰好崩潰一次
- 8. 分區陣列分成相同總和值的K個子集
- 9. 恰好有settlementError的settlementState批什麼?
- 10. 如何處理文件恰好一次
- 11. 獲取每個例子恰好一次
- 12. 往返HTTP cookie恰好一次
- 13. 恰好一次交付和MSMQ
- 14. 一個列表的所有k路分區遞歸算法
- 15. 是否有一個MySQL查詢,可以編碼成JSON恰好這種方式?
- 16. 恰好罕見用戶
- 17. DTD恰好2個元素
- 18. 顏色分割:一個更好的聚類分析,找到K
- 19. 檢索線的第二部分的第一部分相匹配時恰好
- 20. 滾動,而鼠標恰好在範圍滑塊上更改值
- 21. 劃分Python模塊成多個區域
- 22. 類型錯誤在/ MyApp的/你好/你好()恰恰2個參數(1給出)
- 23. 我怎樣才能讀取Python的http.client恰好一個響應塊?
- 24. 能否成爲一個好的分區密鑰?
- 25. 正好有k個顏色邊緣的生成樹
- 26. 使用兩個分區還是比沒有分區更好?
- 27. 找到一個序列,使k正好在它之間有k個數字
- 28. 選擇與CSS的所有元素,如果恰好有5
- 29. if();那麼,分號恰好在括號之後?
- 30. 發現通過向圖訪問所有節點唯一路徑恰好一次
添加一些代碼,以便我們可以幫助您。 – rusben
只需運行通常的遞歸算法來生成所有可能的分區,但在深度k-1處停止。剩下的就是你的第k塊。 –
沒有代碼。這就是我問的原因。 – coderodde