题目:
http://39.106.164.46/problem.php?id=1079
思路:
题目要求装满,然后又是完全背包。注意初始化时将dp初始化为INF,dp[0]=0即可。
代码如下:
#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<cmath>
#include<queue>
#include<cstring>
#include<vector>
#include<stack>
#include<map>
#include<set>
#define MAX 505
#define INF 0x3f3f3f3f
typedef long long ll;
using namespace std;int n,m;
int w[MAX],v[MAX],dp[10005];int main(){
while(cin>>n>>m){
memset(dp,INF,sizeof(dp));dp[0]=0;for(int i=0;i<n;i++){
cin>>w[i]>>v[i];}for(int i=0;i<n;i++){
for(int j=v[i];j<=m;j++){
dp[j]=min(dp[j],dp[j-v[i]]+w[i]);}}cout<<dp[m]<<endl;}return 0;
}