1. 程式人生 > >【基礎練習】【揹包DP】codevs1068 烏龜棋題解

【基礎練習】【揹包DP】codevs1068 烏龜棋題解

小明過生日的時候,爸爸送給他一副烏龜棋當作禮物。 烏龜棋的棋盤是一行N個格子,每個格子上一個分數(非負整數)。棋盤第1格是唯一 的起點,第N格是終點,遊戲要求玩家控制一個烏龜棋子從起點出發走到終點。

…… 1 2 3 4 5 ……N 烏龜棋中M張爬行卡片,分成4種不同的型別(M張卡片中不一定包含所有4種類型 的卡片,見樣例),每種型別的卡片上分別標有1、2、3、4四個數字之一,表示使用這種卡 片後,烏龜棋子將向前爬行相應的格子數。遊戲中,玩家每次需要從所有的爬行卡片中選擇 一張之前沒有使用過的爬行卡片,控制烏龜棋子前進相應的格子數,每張卡片只能使用一次。 遊戲中,烏龜棋子自動獲得起點格子的分數,並且在後續的爬行中每到達一個格子,就得到 該格子相應的分數。玩家最終遊戲得分就是烏龜棋子從起點到終點過程中到過的所有格子的 分數總和。 很明顯,用不同的爬行卡片使用順序會使得最終遊戲的得分不同,小明想要找到一種卡 片使用順序使得最終遊戲得分最多。 現在,告訴你棋盤上每個格子的分數和所有的爬行卡片,你能告訴小明,他最多能得到 多少分嗎?