當我們求解某些問題時,由於這些問題要處理的資料相當多,或求解過程相當複雜,使得直接求解法在時間上相當長,或者根本無法直接求出。對於這類問題,我們往往先把它分解成幾個子問題,找到求出這幾個子問題的解法後,再找到合適的方法,把它們組合成求整個問題的解法。如果這些子問題還較大,難以解決,可以再把它們分成幾個更小的子問題,以此類推,直至可以直接求出解為止。這就是分治策略的基本思想。
基本的步驟為:分而治之,把乙個複雜的問題分解成很多規模較小的子問題,然後解決這些子問題,把解決的子問題合併起來,大問題就解決了。
比如說二分查詢,就是用的分治思想。要在乙個有序的公升序陣列裡面查詢乙個數x有沒有,不用拿陣列裡面每個數挨個比較,這是暴力列舉。仔細考慮一下,我們可以把問題分成兩部分,前半段有沒有?後半段有沒有?然後繼續細分。
還有排列問題、歸併排序、棋盤覆蓋問題等等,都體現了分治思想。
分治的概念
基本思想 當我們求解某些問題時,由於這些問題要處理的資料相當多,或求解過程相當複雜,使得直接求解法在時間上相當長,或者根本無法直接求出。對於這類問題,我們往往先把它分解成幾個子問題,找到求出這幾個子問題的解法後,再找到合適的方法,把它們組合成求整個問題的解法。如果這些子問題還較大,難以解決,可以再把...
網路程式設計基礎概念理解
協議 網路之中主機進行通訊必須使用相同的協議。相同的光電訊號格式 計算機如何傳輸資料 光電波訊號0101110011 0101110011 協議就是乙個相互都能識別的約定 網路中生產廠商很多,協議很多,都用自己的協議將導致網路上主機間無發正常通訊,所以要設計乙個標準協議,這時候網路間資料傳輸就可以通...
Python之程式設計基礎概念
6.基本內建資料型別與運算子 6.3 浮點數 6.4 運算子 每個物件由 標識 id 型別 type 值 value 組成 型別 相當於物件儲存的 資料 的型別。型別可以限制物件的取值範圍和可執行操作,使用type 123 獲取所屬型別。值 表示物件所儲存的資料的資訊。使用print 123 直接打...