洛谷 P1541 烏龜棋 (四維費用揹包)

2021-08-27 13:57:10 字數 866 閱讀 9209

一開始直接用01揹包

後來發現這個物品和位置有關。

也就是價值不是固定的

後來看了題解

看了卡片最多就4

所以這是乙個四維費用的揹包,

每一維是卡片的數量

價值就是當前的位置的價值。

但是與常規的揹包還是有點不同

**中沒有列舉物品這一項

實際上迴圈裡面的四個卡片的判斷語句就是列舉四個物品

這裡是先體積後物品,保證了這四個物品只選了一件

分組揹包中同一組內物品的迴圈順序也是先提及後物品

#include#include#include#define rep(i, a, b) for(int i = (a); i < (b); i++)

#define _for(i, a, b) for(int i = (a); i <= (b); i++)

using namespace std;

const int maxn = 45;

const int maxm = 360;

int f[maxn][maxn][maxn][maxn];

int num[maxm], g[10], n, m, x;

void up(int& x, int a)

int main()

f[0][0][0][0] = num[1];

_for(a, 0, g[1])

_for(b, 0, g[2])

_for(c, 0, g[3])

_for(d, 0, g[4])

printf("%d\n", f[g[1]][g[2]][g[3]][g[4]]);

return 0;

}

洛谷 P1541 烏龜棋(四維揹包dp)

小明過生日的時候,爸爸送給他一副烏龜棋當作禮物。烏龜棋的棋盤是一行n個格仔,每個格仔上乙個分數 非負整數 棋盤第1格是唯一的起點,第n格是終點,遊戲要求玩家控制乙個烏龜棋子從起點出發走到終點。烏龜棋中m張爬行卡片,分成4種不同的型別 m張卡片中不一定包含所有4種型別的卡片,見樣例 每種型別的卡片上分...

DP 四維陣列 P1541 烏龜棋

題目背景 小明過生日的時候,爸爸送給他一副烏龜棋當作禮物。題目描述 烏龜棋的棋盤是一行 n個格仔,每個格仔上乙個分數 非負整數 棋盤第 1格是唯一的起點,第 n格是終點,遊戲要求玩家控制乙個烏龜棋子從起點出發走到終點。烏龜棋中 m張爬行卡片,分成 4種不同的型別 m張卡片中不一定包含所有 4種型別的...

P1541 烏龜棋(四維動歸)

題目描述 烏龜棋的棋盤是一行 nn 個格仔,每個格仔上乙個分數 非負整數 棋盤第1格是唯一的起點,第 nn 格是終點,遊戲要求玩家控制乙個烏龜棋子從起點出發走到終點。烏龜棋中 mm 張爬行卡片,分成4種不同的型別 mm 張卡片中不一定包含所有 44 種型別的卡片,見樣例 每種型別的卡片上分別標有 1...