【题解】hdu2602 01背包

题目链接
01背包 可以优化空间复杂度 还可以优化常数(很迷)

//01背包优化空间复杂度 
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1e3+10;
int w[N],c[N],f[N];
int main()
{
    //freopen("in.txt","r",stdin);
    int v,t,n,i,j;
    scanf("%d",&t);
    while(t--)
    {
        memset(f,0,sizeof(f));
        scanf("%d%d",&n,&v);
        for(i=1;i<=n;i++)scanf("%d",&c[i]);//读入价值
        for(i=1;i<=n;i++)scanf("%d",&w[i]);//读入体积
        for(i=1;i<=n;i++)
        for(j=v;j>=w[i];j--)//此处写成j++ 
        f[j]=max(f[j],f[j-w[i]]+c[i]);
        printf("%d\n",f[v]);
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_41958841/article/details/81636000