zoukankan      html  css  js  c++  java
  • 01背包问题

    //01背包问题
    #include<iostream>
    using namespace std;
    const int maxn = 100; //物品数最大值
    const int maxv = 1000;//容量最大值
    int main()
    {
        int n;//n件物品
        int V;//b背包容量
        int dp[maxn][maxv] ;//dp[i][v]代表前i件物品恰好装入容量为v的背包的最大价值
        int w[maxn];//物品重量
        int c[maxn];//物品价值
        int v;
        while(cin>>n>>V)
        {
            for(int i=1;i<=n;i++)
            {
                cin>>w[i];
            }
            for(int i=1;i<=n;i++)
            {
                cin>>c[i];
            }
            //初始化边界
            for(v=0;v<=V;v++)//放入0件物品的价值为0
                dp[0][v] = 0;
                
            for(int i=1;i<=n;i++)
            {
                for(v=1;v<=V;v++)
                {
                    if(v<w[i])  //第i件物品放不进去
                        dp[i][v] = dp[i-1][v];
                    else
                        dp[i][v] = max(dp[i-1][v],dp[i-1][v-w[i]]+c[i]);
                }
            }
            cout<<dp[n][V]<<endl;
        }
        return 0;
    }
  • 相关阅读:
    享元模式及php实现
    共享内存
    LCD触屏驱动
    I2C驱动
    C++ & java小结
    使用GlobalKey启动APP
    socketpair通信
    inotify和epoll
    C语言之二叉树
    灯光系统
  • 原文地址:https://www.cnblogs.com/ttzz/p/10594380.html
Copyright © 2011-2022 走看看