動態規劃主要是採用遞推以及區域性結果復用來進行計算處理。比較清晰的乙個例子就是斐波拉契數列,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神當然不願錯過這個機會,...