策略:拿填空的那幾分6-8足矣
內容提要:
分治法回溯法
貪心法動態規劃法
分治法(分解、解決、合併):
原理:對於乙個規模為n的問題,若該問題可以容易地解決(比如說規模n較小)則直接解決;否則將其分解為k個規模較小的子問題,這些子問題互相獨立且與原問題形式相同,遞迴地解這些子問題,然後將各子問題的解合併得到原問題的解。
要求(可以從遞迴的角度去思考):
該問題的規模縮小到一定程度就可以容易地解決
該問題可以分解為若干個規模較小的相同問題
利用該問題分解出的子問題的解可以合併為該問題的解
該問題所分解出的各子問題是相互獨立的
分治法-遞迴技術
分治法-二分查詢
**實現:
1回溯法:回溯法是一種優先搜尋法,按選優條件向前搜尋,以達到目標。但當搜尋到某一步時,發現原先選擇並不優或達不到目標,就退回一步重新選擇。這種走不通就退回再走的技術就是回溯法。//用來測試呼叫函式的次數,與函式本身無關
2private
static
int count = 0;3
static
void main(string
args)4;
6int key = binaryselect(arry, 0, arry.length - 1, 29
);7 console.write(key+"
\t"+count);
8console.readkey();9}
10//
二分查詢法
11public
static
int binaryselect(int arry, int start, int end, int
value)
1219
else
2028
else
if (arry[key] >value)
2933
else
3438
}39 }
試探部分(擴大規模):滿足除規模之外的所有條件,則擴大規模
貪心法:
總是做出在當前來說是最好的選擇,而並不是從整體上加以考慮,它所做的每一步選擇只是當前步驟的區域性最優選擇,但從整體來說不一定是最優的選擇。由於它不必為了尋找最優解而窮盡所有可能解,因此其耗時少,一般可以快速得到滿意的解,但得不到最優解。
動態規劃法:
在求解問題中,對於每一步決策,列出各種可能的區域性解,再依據某種判定條件,捨棄那些肯定不能得到最優解的區域性解,在每一步都經過篩選,以每一步都是最優解來保證全域性是最優解。
例1:
問題2:貪心演算法,貪心演算法,o(n^2),o(n^2)
例2:
軟考自查 資料結構及演算法應用
對於乙個規模為n的問題,若該問題可以容易地解決 比如說規模n較小 則直接解決 否則將其分解為k個規模較小的子問題,這些子問題互相獨立且與原問題形式相同,遞迴地解這些子問題,然後將各子問題的解合併得到原問題的解。該問題的規模縮小到一定的程度就可以容易地解決 該問題可以分解為若干個規模較小的相同問題 利...
微軟等資料結構與演算法面試100題 第十五題
第十五題 題目 輸入一顆二元查詢樹,將該樹轉換為它的映象,即在轉換後的二元查詢樹中,左子樹的結點都大於右子樹的結點。用遞迴和迴圈兩種方法完成樹的映象轉換。分析 題目要求求解乙個二元搜尋樹的映象,用兩種方法實現,遞迴和非遞迴。首先,對於求解乙個二元搜尋樹映象其實就是把樹中的每個節點的左右子樹調換了即可...
軟考筆記第六天之資料結構與演算法基礎(二)
圖 完全圖 在無向圖中,若每對頂點之間都有一條邊相連,則稱該圖為完全圖 complete graph 在有向圖中,若每對頂點之間都有兩條有向邊相互連線,則稱該圖為完全圖。鄰接矩陣 兩個結點之間有連線則為1,沒有則為0.有n個結點,就需要一張n n的矩陣 可以用上三角或下三角儲存資料 鄰接表 圖的遍歷...