九度 1532:棋盘寻宝扩展(背包方案统计)
2014-03-04 13:30
211 查看
题目描述:
现在有一个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)
代码
现在有一个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 <iostream> #include <stdio.h> #include <memory.h> using namespace std; const int INF = 10005; int dp[10010]; int money[110]; void dodp(int n) { memset(dp, 0x80, sizeof(dp)); dp[0] = 0; for(int i = 0; i < n; i ++) { for(int v = INF; v >= 0; v --) { if(v >= money[i]) dp[v] = max(dp[v-money[i]]+money[i], dp[v]); } } for(int i = 0; i < INF; i++) { if(dp[i] < 0) { cout << i << endl; break; } } } int main() { int n; while(scanf("%d", &n) != EOF) { for(int i = 0; i < n; i ++) scanf("%d", money+i); dodp(n); } return 0; }
相关文章推荐
- 九度OJ 1532 棋盘寻宝扩展 -- 动态规划【背包问题】
- 九度OJ 1532 棋盘寻宝扩展 -- 动态规划【背包问题】
- 题目1532:棋盘寻宝扩展 -九度
- 九度OJ 题目1532:棋盘寻宝扩展(动态规划)
- [各种面试题] 棋盘寻宝扩展
- 九度 1529:棋盘寻宝(递推DP)
- POJ 3093 Margaritas(Kind of wine) on the River Walk (背包方案统计)
- 题目4:棋盘寻宝扩展
- 九度 题目1529:棋盘寻宝
- 棋盘寻宝扩展(微策略2012年校园招聘笔试题)
- POJ 1426 Find The Multiple(背包方案统计)
- (01背包扩展) 算法提高 金明的预算方案
- 九度题目1529:棋盘寻宝
- 算法之每日一题:棋盘寻宝扩展
- 棋盘寻宝扩展(微策略2012年校园招聘笔试题)
- HDU 2126(01背包扩展,记录方案数)
- 题目1529:棋盘寻宝 -九度
- POJ 3093 Margaritas on the River Walk(背包方案统计变型)
- 【九度】题目1529:棋盘寻宝
- 棋盘寻宝扩展