zoukankan      html  css  js  c++  java
  • 0-1背包

    试题描述

    背包问题……典型0-1背包!题曰:今有n个物品,第i个体积为V[i],价值为W[i],背包的容积为C。求在体积不超容积的前提下,背包中可装物品价值的最大值。

    输入
    第一行:两个整数 n 和 C ; 第二行~第n+1行:每行两个整数Vi与Wi,有一个空格分隔。
    输出
    一个数,表示背包中能得到物品价值的最大值。 
    输入示例
    2 10 1 1 2 2
    输出示例
    3
    其他说明
    数据范围:1 <= n <= 100; 1<= Vi,Wi <= 100; 1 <= C <= 10000。
    #include <iostream>
    using namespace std;
    int f[101][101],a[10010],b[10010],n,v;
    int max(int x,int y)
    {
        if(x>y)
            return x;
        else 
            return y;
    }
    int main()
    {
        cin>>n>>v;
        for(int i=1;i<=n;i++)
            cin>>a[i]>>b[i];
        for(int i=1;i<=n;i++)
        {
            for(int j=a[i];j<=v;j++)
            {
                if(b[i]<v)
                    f[i][j]=max(f[i-1][j],f[i-1][j-a[i]]+b[i]);
                else 
                    f[i][j]=f[i-1][j];
            }
        }
        cout<<f[n][v];
    } 
    View Code
  • 相关阅读:
    输入流输出流打印到文件
    前缀和
    树形dp
    快速幂 ,快速幂优化,矩形快速幂(java)
    尾递归
    java中bigInteger的应用
    求树的最大直径
    买不到的数目
    ccpc 长春站 G
    大学ACM第二周心得
  • 原文地址:https://www.cnblogs.com/jason2003/p/6574371.html
Copyright © 2011-2022 走看看