union-find

    0熱度

    1回答

    有人可以請用粗體解釋答案嗎?它是如何完成的? 下面是四個聯合查找操作(帶有加權聯合和完整com- 按下)的序列,導致了以下up-tree。最後兩個操作是什麼? (D,A),Union(B,C),Union(D/A,B/C),Find(B/C)。 答案:

    0熱度

    1回答

    所以我正在採訪練習題,我遇到了這個問題: 給定一個字符串str和對數組,指示字符串中的哪些索引可以交換,返回從字典中最大的字符串做允許的掉期。您可以交換指數任意次數。 例 對於STR = 「ABDC」 和對= [[1,4],[3,4]],輸出應該是 swapLexOrder(STR,對)= 「DBCA」。 通過交換給定的索引,您將得到字符串:「cbda」,「cbad」,「dbac」,「dbca」。

    6熱度

    3回答

    我致力於聯盟調查。我想根據一個索引與另一個索引是否共享一個數字來對數字對進行分組。所以: 我有對的陣列,如以下: pairs: [[1,3], [6,8], [3,8], [2,7]] 什麼對他們在工會組的最佳方式如此: [ [ 1, 3, 8, 6 ], [ 2, 7 ] ] ([1,3]和[3,8]因爲他們共享而團隊合作3.該團體與[6,8]合併,因爲他們共享8.在javascript

    0熱度

    1回答

    我正在嘗試使用kruskal算法來解決this MST question on spoj。我的程序似乎適用於所有的測試用例,但是反覆使用這個代碼會給WA帶來麻煩。 我無法在此代碼上找到任何失敗的測試用例。有人能指出我做錯了什麼嗎? import java.io.PrintWriter; import java.util.Arrays; public class CSTREET {

    2熱度

    1回答

    我本來會期望這樣一個有用的數據結構被包含在C++ Standard Library中,但我似乎無法找到它。

    1熱度

    1回答

    我正在研究有關不相交集合的算法。 和Fast FIND Implementation (Quick Find) 的數據結構的章節如下: 例如) int array[5] [0] = 3, [1] = 5, [2] = 7, [3] = 1, [4] = 2, 在[number] = set name(上面的例子),數量是在該組名稱的元素。 所以,編號0是在該組3,編號1是在該組5,

    1熱度

    1回答

    這是參照書算法(Fouth版)由羅伯特·塞奇威克&凱文·韋恩 對於聯盟找到實現中,發現代碼和工會給出(第222頁)作爲: public int find(int p) { return id[p]; } public void union(int p, int q) { // Put p and q into the same component. int pID = f

    1熱度

    1回答

    我嘗試瞭解boost::disjoint_sets_with_storage,但即使是最簡單的示例也可能不起作用,我不明白爲什麼。 #include <boost/pending/disjoint_sets.hpp> int main(){ boost::disjoint_sets_with_storage<> union_find; union_find.make_set

    0熱度

    2回答

    據我的理解,在快速聯合算法中,當我們要處理一對時,我們首先要求執行FIND操作並檢查這些對象所在樹的根是否相等。 如果它們不相等,我們通過鏈接2個不同的根來執行UNION操作。 在Sedgewick pg-15屬性中:1.2-「假設輸入對的順序爲1-2,然後是2-3,然後是3-4等等,在N-1個這樣的對之後,我們有 中的N個對象都是同一個集合,並且由快速聯合算法形成的樹是一條直線,N指向N-1,指

    -2熱度

    1回答

    我剛開始普林斯頓算法過程,並試圖實現一個非常基本的快速查找算法,用C如下 - #include <stdio.h> void find(int *, int, int); void unite(int *, int, int); int main() { int arr[10], i, n1, n2, opt; char ch; for (i = 0; i