#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn=100010;
int a[110],b[110];
int dp[maxn];
int k;
int main(){
int t;
while(~scanf("%d",&t)){
for(int i=0;i<t;i++) cin>>a[i]>>b[i];
cin>>k;
memset(dp, 0, sizeof(dp));
for(int i=0;i<t;i++){
for(int j=b[i];j<=k;j++){
dp[j]=max(dp[j],dp[j-b[i]]+a[i]);
}
}
cout<<dp[k]<<endl;
}
}
湫湫系列故事——减肥记I HDU - 4508 (0-1背包问题)
最新推荐文章于 2022-01-02 17:52:51 发布
本文介绍了一种解决包含t个输入项的动态规划问题的C++实现方法。通过实例展示了如何使用备忘录技术,结合数组dp和两重循环,以求解涉及数组a和b的最优化问题。博客重点在于动态规划策略的应用和时间复杂度分析。
摘要由CSDN通过智能技术生成