遞迴與分治法

2021-07-03 12:00:18 字數 344 閱讀 3721

分治法設計思想:將乙個規模較大的問題,分解成若干規模較小但問題的性質與原問題相同的子問題,然後將這些子問                                 題逐個擊破,再將子問題的解合併為原問題的解。

基本步驟:1)分解:將原問題分解為若干子問題

2)解決:若問題規模足夠小,可直接解決時,就直接解決;否則,遞迴解決這些子問題

3)合併:將子問題的解合併為原問題的解。

在實際解題時,應先考慮當問題很小時,如何解決;然後逐漸考慮問題規模較大時,如何解決;此時決定是否選用分治法。

例題:

二分查詢

合併排序

快速排序

迴圈賽日程表

遞迴和分治法

將問題分解,通過求解區域性性的小問題來解開原本的問題。這種技巧稱為分治法。int factorial int n return ans int factorial int n 面試題 08.06.漢諾塔問題 在經典漢諾塔問題中,有 3 根柱子及 n 個不同大小的穿孔圓盤,盤子可以滑入任意一根柱子。一...

分治與遞迴

分治與遞迴 分治法的設計思想是,將乙個難以直接解決的大問題,分割成一些規模較小的相同問題,以便各個擊破,分而治之。對這k個子問題分別求解。如果子問題的規模仍然不夠小,則再劃分為k個子問題,如此遞迴的進行下去,直到問題規模足夠小,很容易求出其解為止。將求出的小規模的問題的解合併為乙個更大規模的問題的解...

遞迴與分治

一 1 求階乘 int factorial int n 2 fibonacci函式 int fibonacci int n 3 全排列 1 字串的全排列 主函式見 2 int permutation char a,int k,int m permutation arr,0,n 1 return 0 ...