HDU 2602 Bone Collector(01背包,DP)
2012-07-04 23:02
465 查看
典型的01背包。第一次做~
用f [ i ][ j ] 来表示当处理到第 i 项物品,并剩 j 容量时的最大价值。
那么 f [ i ][ j ] = max( f [ i - 1 ][ j ], f[ i - 1 ][ j - volume[ i ] ] + value[ i ])。
用f [ i ][ j ] 来表示当处理到第 i 项物品,并剩 j 容量时的最大价值。
那么 f [ i ][ j ] = max( f [ i - 1 ][ j ], f[ i - 1 ][ j - volume[ i ] ] + value[ i ])。
#include<cstdio> #include<iostream> #include<algorithm> using namespace std; int dp[1100][1100]; int volume[1100]; int value[1100]; int main(){ int T; scanf("%d", &T); while(T--){ int N, V; scanf("%d %d", &N, &V); for(int i = 1; i <= N; i++) scanf("%d", &value[i]); for(int i = 1; i <= N; i++) scanf("%d", &volume[i]); for(int i = 0; i <= V; i++) dp[0][i] == 0; for(int i = 1; i <= N; i++){ for(int j = 0; j <= V; j++){ if(j < volume[i]) dp[i][j] = dp[i - 1][j]; else dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - volume[i]] + value[i]); } } printf("%d\n", dp [V]); } }
相关文章推荐
- HDU 2602 Bone Collector(DP:01背包)
- hdu 2602 Bone Collector (01 背包基础)
- HDU 2602 Bone Collector(附01背包滚动数组的理解)
- hdu 2602 Bone Collector 01背包
- hdu 2602 Bone Collector 01背包
- hdu 2602 (01 背包)Bone Collector
- HDU 2602 Bone Collector(01背包裸题)
- [HDU 2602] Bone Collector 01背包
- hdu 2602 Bone Collector (01 背包问题)
- hdu 2602 Bone Collector(01背包原型)
- hdu 2602 Bone Collector (01背包经典入门)
- hdu 2602 Bone Collector (01背包 入门)
- HDU 2602 Bone Collector(01背包裸题)
- HDU 2602 Bone Collector(赤裸裸01背包)
- hdu 2602 Bone Collector 01背包
- hdu 2602 DP 01背包
- HDOJ--2602--Bone Collector--dp--01背包
- hdu 2602 Bone Collector 简单dp题 0-1背包
- HDU 2602 Bone Collector --01背包
- HDU 2602 Bone Collector(01背包模板题)