九度 1532 棋盤尋寶擴充套件 揹包方案統計

2021-09-06 14:07:45 字數 901 閱讀 2633

題目描述:

現在有乙個8*8的棋盤,上面放著64個不同價值的禮物,每個小的棋盤上面放置乙個禮物(禮物的價值大於0小於100),乙個人初始位置在棋盤的左上角,每次他只能向下或向右移動一步,並拿走對應棋盤上的禮物,結束位置在棋盤的右下角。從棋盤的左上角移動到右下角的時候的,每次他只能向下或向右移動一步,並拿走對應棋盤上的禮物,但是拿到的所有的禮物的價值之和不大於乙個限定值limit,請設計乙個演算法請實現,使其能夠獲得不超過限制值limit的最大價值的禮物。

思路

1. 在棋盤問題的基礎上加了乙個限制, 禮物數不能超過 limit

2. 這個限制使得狀態轉移方程需要進行一下變形

3. dp[i][j][k] 表示 第 (i,j) 個格仔上限制最大價值為 k 時能夠獲得的最大價值

dp[i][j][k] = max(dp[i][j-1][k-matrix[i][j]], dp[i-1][j][k-matrix[i][j]]) + matrix[i][j]

4. 初始化時需要設定為 負無窮, 表示沒有線路能夠在不超過 limit 的情況下得到 (i,j)

**

#include #include 

#include

using

namespace

std;

const

int inf = 10005

;int dp[10010

];int money[110

];void dodp(int

n) }

for(int i = 0; i < inf; i++)

}}int

main()

return0;

}

九度OJ 1529 棋盤尋寶

題目描述 現在有乙個8 8的棋盤,上面放著64個價值不等的禮物,每個小的棋盤上面放置乙個禮物 禮物的價值大於0小於1000 乙個人的初始位置在棋盤的左上角,每次他只能向下或向右移動一步,並拿走對應棋盤上的禮物,結束位置在棋盤的右下角,請設計乙個演算法使其能夠獲得最大價值的禮物。輸入 輸入包含多個測試...

題目4 棋盤尋寶擴充套件

題目4 棋盤尋寶擴充套件 時間限制 1 秒 記憶體限制 128 兆 特殊判題 否 提交 59 解決 32 題目描述 現在有乙個8 8的棋盤,上面放著64個不同價值的禮物,每個小的棋盤上面放置乙個禮物 禮物的價值大於0小於100 乙個人初始位置在棋盤的左上角,每次他只能向下或向右移動一步,並拿走對應棋...

題目4 棋盤尋寶擴充套件

題目4 棋盤尋寶擴充套件 時間限制 1 秒 記憶體限制 128 兆 特殊判題 否 提交 59 解決 32 題目描述 現在有乙個8 8的棋盤,上面放著64個不同價值的禮物,每個小的棋盤上面放置乙個禮物 禮物的價值大於0小於100 乙個人初始位置在棋盤的左上角,每次他只能向下或向右移動一步,並拿走對應棋...