• 有依赖的背包


    有依赖背包

    #include<iostream>

    #include<algorithm>

    #include<cstring>

    using namespace std;

    const int maxn=55;

    const int maxv=100005;

    int tmp[maxv];

    int f[maxn][maxv];

    int N,V;  //主件的数量,背包的容量

    int main()

    {

        while(cin>>N>>V)

        {

            memset(f,0,sizeof(f));

            for(int i=1;i<=N;i++)

            {

                memset(tmp,-1,sizeof(tmp));

                int p,m;  //主件的费用,附件的数量

                cin>>p>>m;

                for(int j=p;j<=V;j++)

                    tmp[j]=f[i-1][j-p];

                int v,w;

                for(int j=1;j<=m;j++)

                {

                    cin>>v>>w;  //每一个附件的重量和价值

                    for(int k=V;k>=v;k--)

                    if(tmp[k-v]!=-1)

                        tmp[k]=max(tmp[k],tmp[k-v]+w);

                }

                for(int j=V;j>=0;j--)

                    f[i][j]=max(tmp[j],f[i-1][j]);

            }

            cout<<f[N][V]<<endl;

        }

        return 0;

    }

  • 相关阅读:
    Spring入门
    排序算法【整理】
    C#并发解决(lock)
    Java poi导出word表格
    layui table checkbox默认选中
    Element table表尾合计行嵌入input
    Java接收带List的实体类
    Web SQL Database+mui上传视频
    Web SQL Database+mui上传图片
    mui 上传视频
  • 原文地址:https://www.cnblogs.com/fanhao050109/p/11228482.html
Copyright © 2020-2023  润新知