我想教自己動態編程,並從麻省理工學院遇到這個問題。用動態編程玩弄棋盤格
我們給出了一個有4行n列的棋盤,而 有一個寫在每個正方形中的整數。我們還給了一組2n鵝卵石,並且我們想要 將這些中的一些或全部放置在棋盤上(每個卵石可以放置在正好一個正方形上),以便最大化正方形中整數的總和由鵝卵石覆蓋。有一個約束:對於放置鵝卵石是合法的,它們中的任何一個都不能水平放置,或者垂直相鄰的方格(對角線鄰接是正確的)。 (a)確定任何列中可能出現的合法模式的數量(單獨,忽略鄰近列中的卵石),並描述這些模式。 如果兩個圖案可以放在相鄰列上以形成合法佈局,則調用兩個圖案兼容。讓我們考慮由第k個列1 k n組成的子問題。每個子問題 可以分配一個類型,這是最後一列中出現的模式。 (b)使用兼容性和類型的概念,給出一個O(n)時間動態規劃算法來計算最佳位置。
好的,所以對於第一部分:有8種可能的解決方案。
對於b部分,我不確定,但這是我的目標: 分爲子問題。假設我在n。 1.通過對列0,...,i進行鵝卵石化,將Cj [i]定義爲最優值,使得列i具有模式類型j。 2.爲每種模式類型創建8個獨立的n個元素數組。
我不確定該從哪裏出發。我意識到網上有這個問題的解決方案,但解決方案似乎不是很清楚。
我只看到7部分可能的解決方案a你能解釋所有8種可能的解決方案嗎? – akashchandrakar
法律欄目安排:[ - | - | - | - ]; [X | - | - | - ]; [ - | X | - | - ]; [ - | - | X | - ]; [ - | - | - | X]; [X | - | X | - ]; [X | - | - | X]; [ - | X | - | X](完整性回答) – Sosavpm