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

2021-10-02 14:11:21 字數 853 閱讀 5285

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

把每次的計算結果儲存起來,就可以方便的得到下乙個資料了。這樣的規劃處理方式比直接遞迴處理要快很多。

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

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

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

完美正方形

對於 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

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

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

正方形 長方形 立方體

description 給出正方形 square 長方形 rectangle 立方體 cuboid 的邊長,求周長 面積 體積。square類只需存一條邊長,建構函式產生一條輸出,有邊長 周長 面積的函式。rectangle類需存長和寬,若從square類派生而來,因此只需增加一條邊,建構函式產生一...

動態規劃法 入門 最大正方形 最大長方形

最大正方形 largest square 題意 現有h w個邊長為1cm的正方形瓷磚排列在一起,其中有一部分瓷磚有汙跡,求僅有乾淨瓷磚構成的最大正方形的面積。輸入 4 50 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 輸出4首先,我們設乙個dp陣列,其中dp i j ...

最大子正方形 (!) 動態規劃

背景描述 忙完了學校的事,v神終於可以做他的 正事 陪女朋友散步。一天,他和女朋友走著走著,不知不覺就來到了乙個千里無菸的地方。v神正要往回走,如發現了一塊牌子,牌子上有有一行小字和一張圖,小字說道 找到圖上最大的交錯正方形之後和我聯絡,這塊地就是你的了。在房價瘋長的年代,v神當然不願錯過這個機會,...