動態規劃處理長方形分割爲正方形問題

動態規劃主要是採用遞推以及局部結果複用來進行計算處理。比較清晰的一個例子就是斐波拉契數列,f(n) = f(n – 1) + f(n – 2)

把每次的計算結果保存起來,就可以方便的得到下一個數據了。這樣的規劃處理方式比直接遞歸處理要快很多。

 

動態規劃的經典應用是揹包問題。

https://blog.csdn.net/chanmufeng/article/details/82955730

 

這裏討論長方形切分爲正方形的問題,每次把邊長爲整數的長方形一分爲二,求全部爲正方形的最小個數。

這裏我們討論的是每次一分爲二,所以不是完美正方形問題,

 

完美正方形

 

 

對於 5 *6 的長方形,採用貪婪法處理,先切一個5*5的,再對另一個1*5的進行切分,這樣總共有6個正方形,

 

 

但還有更少的切分方法:

 

處理思路:採用枚舉的動態規劃方案,找到最優方式,

F(W, H) = 1  W = H 時

        Min( F(W – a, H) + F(a, H) )  a = 1, 2, … W/2

        Min (F(W, a) + F(W, H – a) )  a = 1, 2, … H./2

 

這樣枚舉填表,就可以找到最優方案

 

同樣的原理,也可以處理長方體分割爲正方體問題。

 

 

 

發佈了339 篇原創文章 · 獲贊 15 · 訪問量 34萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章