divide-and-conquer

    1熱度

    3回答

    「爲給定應用程序設計正確的算法是一項困難的工作,它需要一個主要的創造性行爲,解決問題並將解決方案從以太網中解脫出來,這比接受某人更困難其他人的想法,並修改或調整它,使其更好一點。在算法設計中你可以做出的選擇空間是巨大的,足以讓你有足夠的自由來吊死自己。 我研究過像分治,動態規劃,貪心算法幾個基本的設計手法,回溯等 但我始終沒有認識到什麼樣的原則,當我遇到某些編程問題適用。我想要掌握算法的設計。 所

    0熱度

    1回答

    有實踐在我的算法教科書問題是我不知道的,並希望有人能詳細點/解釋: 當你設計一個分而治之算法來存儲大小爲n的鏈表項,在最壞的情況下,將問題分爲一半的問題比算法將列表分成一個大小爲1的子問題和另一個大小爲n-1的問題的漸近更快?

    2熱度

    1回答

    一種算法將大小爲n的問題分解爲每個大小爲n/b的b個子問題,其中b是整數。分解的代價是n,C(1)= 1。使用重複替換顯示,對於2≥b的所有值,算法的複雜度爲O(n lg n)。 (n)= C(n/b)+ n 並且在用k個步驟代替我之後得到C(n)= C(n/b^k)+ N [求和(從i = 0到k-1)的(1/b)^ I] K =日誌(基極b)N 我不知道我得到所有這對,因爲當我完成這個任務時,

    4熱度

    3回答

    如果在函數中只有一個遞歸調用,我可以很容易地理解遞歸。但是,當我在同一個函數中看到兩個或多個遞歸調用時,我真的感到困惑。例如: int MaximumElement(int array[], int index, int n) { int maxval1, maxval2; if (n==1) return array[index]; maxval1

    0熱度

    2回答

    我迄今所做的是: T(n-1) + 10/n T((n-1)-1) + 10/(n-1) + 10/n = T(n-2) + 10/(n+1) + 10/n T((n-2)-1) + 10/(n+2) + 10/(n+1) + 10/n = T(n-3) + 10/(n+2) + 10/(n+1) + 10/n 假設n-k = 1, 所以......我這裏迷路, T(n-k) +

    0熱度

    2回答

    該算法應該找到只使用一角硬幣,五分硬幣和便士,就可以對輸入數量進行改變的方法數量。我的做法是採用分而治之的策略,通過找出用最大的硬幣進行變化的方式數量,一角硬幣以及不用一角硬幣就能做出改變的方法數量。我爲這個算法編寫了一個實現,它正確地解決了1 ... 14輸入的問題,但是當輸入等於或大於15時,返回的結果是不正確的。顯然,我的算法是錯誤的,並且想知道需要做些什麼修改來修復代碼,以及我的方法是否是

    1熱度

    1回答

    我在理解分而治之算法的以下屬性時遇到了問題。 劃分大小N的問題分解成兩個獨立的 (非空),該解決了遞歸調用自身小於N倍份的遞歸方法。 證明是 遞歸函數劃分大小N的問題分解成兩個獨立的 (非空),該解決了遞歸調用自身小於N倍份。 如果這些部件是尺寸爲k和尺寸爲N-k中的一個,則我們使用的遞歸調用總數爲T(n) = T(k) + T(n-k) + 1,對於N>=1和T(1) = 0的總數爲 。 解決方

    1熱度

    1回答

    您將獲得2010年奧林匹克票的n個請求的數組A.該陣列在請求時被排序,以便A(1)是第一個到達,A(2)是第二個到達等等。每個請求包含一個十位電話號碼。爲了公平起見,奧林匹克組織者制定了一條規定,每個電話號碼只能有一個請求。已經注意到數組A包含來自某些電話號碼的多個請求。寫一個O(nlogn)時間分割和征服算法,從A中刪除除了第一次接收到的來自同一個電話號碼的所有請求。最終輸出應該是數組A,其中包

    1熱度

    2回答

    一直在學習分而治之,我正在努力去理解一個概念。如果我們有一個排序的數組,並希望做一些任務....我們得到的公式 T(n) = a (n/b) * O(n) 如果我們使用b = 2(二叉樹),這意味着每個子陣列製作成兩個子陣......我們得到 T(n) = 2 (n/2) * O(n) - >和掌握規則running time = O(n * logn) 現在,如果我們使用b = 3(三進制樹

    1熱度

    1回答

    我有我的tromino程序。但是,現在它需要轉換爲圖形(我最後留下)。我很困惑如何做到這一點,我知道一些關於圖形的基礎知識,但看看我的程序,似乎我可能需要做很多修改才能使其工作。 有沒有簡單的方法來做到這一點? 基本上我需要將我現在作爲數字的trominos轉換成一個棋盤(大小由用戶指定)。不足的廣場是任何顏色,表明它是缺陷廣場的位置。下面是代碼: import java.util.*;