1 条题解

  • 0
    @ 2025-2-14 21:20:40

    C :

    #include<stdio.h>
    #include<string.h>
    int main()
    {
        int w[1001],c[1001],dp[1001];
        int n,v,i,j;
        while(scanf("%d%d",&n,&v)==2)
        {   if(n==0&&v==0)
            break;
            memset(dp,0,sizeof(dp));
            for(i=0; i<n; ++i)
                scanf("%d%d",&c[i],&w[i]);
            for(i=0; i<n; ++i)
                for(j=v; j>=c[i]; --j)
                {
                    if(dp[j]<dp[j-c[i]]+w[i])
                        dp[j]=dp[j-c[i]]+w[i];
                }
            printf("%d\n",dp[v]);
        }
    }
    
    

    C++ :

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #include<cstring>
    #include<algorithm>
    #include<cstdlib>
    using namespace std;
    int f[1010][1010];
    int weight[1010],cost[1010];
    int main()
    {
        int n,v,i,j;
        while(cin>>n>>v)
        {
            if(n == 0 && v == 0) break;
            memset(f,0,sizeof(f));
            for(i = 1; i <= n; i++)
            cin>>weight[i]>>cost[i];
            for(i = 1; i <= n; i++)
            {
                for(j = 0; j <= v; j++)
                {
                    f[i][j] = f[i-1][j];
                    if(j>=weight[i])
                    f[i][j] = max(f[i-1][j],f[i-1][j-weight[i]] + cost[i]);
                }
            }
            cout<<f[n][v]<<endl;
        }
        return 0;
    }
    
    
    • 1

    信息

    ID
    793
    时间
    3000ms
    内存
    64MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者