divide-and-conquer

    5熱度

    4回答

    給出一個數組,使得元素的值從第0個索引增加到某個索引( -1)。在k該值是最小值,並且通過 n th元素再次開始增加。找到最小元素。 基本上,它的一個排序列表附加到另一個;例如:(1,2,3,4,,1,2,3)。 我嘗試了各種各樣的算法,如建立最小堆,快速選擇或只是普通遍歷。但不能得到它低於O(n)。但是這個數組中有一個模式,這意味着二進制搜索類型應該是可能的,而複雜性應該是類似於O(log n)

    6熱度

    1回答

    以下問題是從Problems on Algorithms採取(問題653): 您正在給定數字的正×2矩陣。找到一個O(n log n)算法,用於對數組中的行進行置換,使得數組的兩列均不包含比⌈ √ n更長的遞增子序列(可能不包含連續數組元素)。 ⌉ 我不知道如何解決這個問題。我認爲它可能會使用某種分而治之的復發,但我似乎無法找到一個。 有沒有人有任何想法如何解決這個問題?

    1熱度

    1回答

    我們想要在會議研討會上展示新的JDK7叉/連接框架。爲此,我們正在尋找一個有趣的例子,該框架可以做些什麼。 有一些明顯的例如排序或矩陣計算,但有更多有趣的人喜歡工作。例如,我們在java網站上發現了圖像模糊,或者可能是天氣預報或類似的東西? 如果域名不是太複雜,那麼這些問題可以在幾天內解決。 任何輸入,非常感謝。任何想法或經驗?

    4熱度

    1回答

    我正在學習數據結構和算法。我提到的這本書(塞奇威克)使用「找到最大元素」來說明分而治之策略。該算法在中途將一個數組分爲兩部分,在兩部分中遞歸地查找最大元素,並返回兩個中較大的一個作爲整個數組的最大元素。 的下面是一個鍛練問題問 修改分而治之程序用於在陣列發現的最大元素(程序5.6)來劃分大小爲N的陣列劃分成大小爲k的一個部分= 2 ^(lg N - 1),另一個大小爲N - k(這樣至少有一個部分

    2熱度

    3回答

    或許讓我說出我的僞C++的情況 - 先代碼: std:vector<double> sample(someFunctor f, double lower, double upper) { double t = (lower + upper)/2; double newval = f(t); if (f(upper) - newval > epsilon)

    2熱度

    1回答

    我解決一個練習測驗分而治之算法的部分和整個以下問題 寫下對應下面鴻溝復發而治之算法來,精確地標記每個組成部分:劃分,征服和組合。 1. Foo (p, r): 2. if p = r 3. return (1) 4. else 5. s ← 1 6. for i = p to r 7. s ← s * i 8. q ← Foo(p, r − 1) * s

    8熱度

    6回答

    我不知道分而治之的技巧是否總是將一個問題分解成同一類型的子問題?同樣的類型,我的意思是可以使用遞歸函數來實現它。分而治之總是可以通過遞歸來實現嗎? 謝謝!

    0熱度

    2回答

    如何使用分而治之算法來查找數組中的至少一半對象是否返回true(在某些函數上)?這些對象沒有可枚舉的值,因此對象A絕不會大於對象B. 要澄清,使用該函數將所有對象相互比較。所以功能(Obj a,Obj b)根據一些標準返回true或false。它們可以組合在一起,我們只是想知道至少一半的比較對象是否回覆真實。

    1熱度

    1回答

    即時嘗試從客戶端發送到服務器的unix命令,等待服務器執行它,然後將結果返回給客戶端。 我設法讓連接工作,但我不知道如何繼續。這是甚至我應該去的方向? #include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #define MAXLINE 1024 int main(void)