题意:经典的01背包题,给出了石头的数量与背包的容量,然后分别给出每个石头的容量与价值,要求最优解,可以说是01背包果题。
http://acm.hdu.edu.cn/showproblem.php?pid=2602
#include<stdio.h> #include<string.h> #include<algorithm> #include<iostream> using namespace std; struct hdu2602{ int val; int v; }a[1010]; int main(){ int T,n,v; scanf("%d",&T); int dp[1010]; while(T--){ cin >> n >> v; for(int i=1;i<=n;i++) cin >> a[i].val; for(int i=1;i<=n;i++) cin >> a[i].v; memset(dp,0,sizeof(dp)); int ans=0; for(int i=1;i<=n;i++) for(int j=v;j>=a[i].v;j--) dp[j]=max(dp[j],dp[j-a[i].v]+a[i].val); printf("%d\n",dp[v]); } return 0; }
时间: 2024-11-02 23:03:19