好像是完全背包吧分不清了……
好像是把数组二维压一维的时候,01背包倒序,完全背包正序
#include<iostream>
#include<cstdio>
using namespace std;
const int N=105,H=55005;
int n,h,p[N],c[N],f[H];
int main()
{
scanf("%d%d",&n,&h);
for(int i=1;i<=n;i++)
scanf("%d%d",&p[i],&c[i]);
for(int i=1;i<=h+5000;i++)
f[i]=1e9;
for(int i=1;i<=n;i++)
for(int j=p[i];j<=h+5000;j++)
f[j]=min(f[j],f[j-p[i]]+c[i]);
int ans=1e9;
for(int i=h;i<=h+5000;i++)
ans=min(ans,f[i]);
printf("%d
",ans);
return 0;
}
···