我只是學習有關動態編程所需要的瓷磚的最小數目,我已經在這,我不知道如何在Python制定一個問題跌跌撞撞:如何找到覆蓋孔在屋頂
給定長度爲55的二進制數組
H
,1
表示屋頂上有洞,0
表示沒有洞。 您可以使用的尾巴長度爲1,13或55,每個部署的成本分別爲3,13和50。 對於給定的孔陣列H
返回最小成本,使得所有的孔都被覆蓋。
從我所瞭解到的,第一步是找到基礎案例,並通過歸納推理。 因此,這裏有一些基本的情況下,我可以很容易地發現:
- 13號的瓷磚低於5瓦的大小1更方便(費用:13 VS 15人以上)
- 大小55瓦比4塊13號的磚更方便(成本:50 vs 52或更多)
最初我認爲第一點意味着如果在13個連續的空間中有5個或更多的洞,我應該總是選擇13塊。不過,我認爲這取決於以下漏洞。
如果你在問題中引入1-tiles,第二點就更成問題了。考慮一下,例如,在[0, 15, 29, 44]
位置有4個單洞,最好使用4個1-tiles(1 x 55-tile費用50,4 x 13-tiles = 52)。
所以它看起來我必須評估「多少間隔」是陣列中切片的所有可能組合的孔。
我怎樣才能將上述內容編入(甚至是僞代碼)?
你開始在Python中的東西嗎? –
這聽起來比NP完成的[Knapsack_problem](https://en.wikipedia.org/wiki/Knapsack_problem)更復雜... – Aprillion
這與Stack [Computer Science](http: //cs.stackexchange.com/)? #just_asking – Taxellool