1. 程式人生 > >Vijos P1464 積木遊戲(動態規劃)

Vijos P1464 積木遊戲(動態規劃)

積木遊戲

SERCOI 最近設計了一種積木遊戲。每個遊戲者有N塊編號依次為1 ,2,…,N的長方
體積木。對於每塊積木,它的三條不同的邊分別稱為"a邊"、"b邊"和"c邊"

遊戲規則如下:
1、從N塊積木中選出若干塊,並將它們分成M(l<=M<=N) 堆,稱為第1堆,第2 堆…,第M堆。每堆至少有1塊積木,並且第K堆中任意一塊積木的編號要大於第K+1堆中任意一塊積木的編號(2<=K<=M)。

2.對於每一堆積木,遊戲者要將它們垂直摞成一根柱子,並要求滿足下面兩個條件:
(1)除最頂上的一塊積木外,任意一塊積木的上表面同且僅同另一塊積木的下表面接觸,並且要求下面的積木的上表面能包含上面的積木的下表面,也就是說,要求下面的積木的上表面的兩對邊的長度分別大於等於上面的積木的兩對邊的長度。

(2)對於任意兩塊上下表面相接觸的積木,下面的積木的編號要小於上面的積木的編號。

最後,根據每人所摞成的M根柱子的高度之和來決出勝負。

請你編一程式,尋找一種摞積木的方案,使得你所摞成的M根柱子的高度之和最大。