題目描述:
現在有乙個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 乙個人初始位置在棋盤的左上角,每次他只能向下或向右移動一步,並拿走對應棋...