第4 5課 鋪瓷磚問題

2021-10-09 16:31:58 字數 694 閱讀 3195

鋪瓷磚、鋪地板、在電路板上嵌入晶元等問題,都屬於一類問題,基本上可以描述為在乙個 n × m 的平面空間中擺放一些形狀固定的物品,要求覆蓋整個平面空間,問有多少種擺放方法。在某些情況下還會增加一點難度,比如在平面上標記一些位置為「壞」點,擺放物品時要避開這些位置等。這類問題傳統上是使用狀態壓縮的動態規劃方法解題,因狀態遞推關係複雜,常用深度優先搜尋(dsf)輔助狀態的遍歷。近些年也流行使用輪廓線動態規劃方法求解,但其本質上還是狀態壓縮。這一課我們就用傳統的狀態壓縮動態規劃方法解決鋪瓷磚問題。

鋪瓷磚(地板)問題通常以格仔為單位給出 n × m 這樣的類似棋盤的平面空間,通常 n 或 m 中的乙個明顯小於另乙個,比如本課要講的題目:有一塊面積為 n × m (n ≤ 6、m ≤ 500)的房間,現在有面積為 1 × 2 和 2 × 1 的地板無數個,要給整個房間鋪上地板,有多少種鋪地板的方法?題目給出了乙個例子,就是當 n = 4、m = 2 的情況,共有 5 種鋪法:

圖(1)4 × 2 的面積鋪地板的 5 種方法

當看到題目中給出的某個維度明顯偏小的時候,就應該知道這可能要用到狀態壓縮了。為什麼這麼說呢?因為題目的狀態往往是呈幾何級數增加的,以鋪瓷磚問題為例,狀態個數是 $2^n$ 個,如果 n 太大,用於表示壓縮的狀

狀態壓縮dp(鋪瓷磚問題)

今天蒜頭君裝修新家,給家裡買了一種 1 times 21 2的長方形 如圖1 新瓷磚。蒜頭君是個懂得審美的人,畢竟人生除了金錢,還有詩和遠方。這個時候蒜頭君就在想,這種長方形的瓷磚鋪到乙個 10 times 1010 10 的地面上有多少種方案?如圖2 是 4 times 44 4 地面的一種方案 ...

SDUT OJ 揹包問題? 鋪瓷磚

題目鏈結 判斷條件就是看能否被整除。揹包問題?description 揹包問題作為一種較為特殊的動態規劃問題,以其獨特的思維方式較為廣泛的應用於實際生活當中。又因實際條件決定進而細分為完全揹包,01揹包,分組揹包等等。現在我們有一間房間需要鋪設地板,房間的規格為n m,地板為正方形,規格為x x x...

鋪瓷磚 狀壓dp經典問題

給出 n m的矩形方塊,可以往上面鋪1 2的磚塊,問鋪滿這個方塊的方案有多少種。磚塊可以豎鋪和橫鋪,豎鋪的話會影響到下一行,橫鋪的話不會影響到下一行,這裡我們令1 表示該方塊不會影響下一行,0 表示該方塊會影響下一行。條件一 考慮 i.j 這一格,如果 i 1,j 上是0,那說明 i 1,j 是豎鋪...