zoukankan      html  css  js  c++  java
  • 题目:逃亡的准备

    题目描述

    【问题描述】
    在《Harry Potter and the Deathly Hallows》中,Harry Potter他们一起逃亡,现在有许多的东西要放到赫敏的包里面,但是包的大小有限,所以我们只能够在里面放入非常重要的物品,现在给出该种物品的数量、体积、价值的数值,希望你能够算出怎样能使背包的价值最大的组合方式,并且输出这个数值,赫敏会非常地感谢你。
    出自:宜昌一中
    【数据规模】
    对于30%的数据
    1<=v<=500
    1<=n<=2000
    1<=m<=10
    1<=w<=20
    1<=s<=100

    对于100%的数据
    1<=v<=500
    1<=n<=2000
    1<=m<=5000
    1<=w<=20
    1<=s<=100

    输入格式

    【输入】
    (1)第一行有2个整数,物品种数n和背包装载体积v。
    (2)2行到n+1行每行3个整数,为第i种物品的数量m、体积w、价值s。.

    输出格式

    【输出】
    仅包含一个整数,即为能拿到的最大的物品价值总和。

    题解:

    简单动归,f数组空间复杂度不可优化,请思考。

    代码实现:

    #include<iostream>
    #include<cstring>
    using namespace std;
    
    int f[2001][501],w[2001],v[2001],m[2001],n,v1;
    
    int main()
    {
        int i,j,k,l;
        cin>>n>>v1;
        
        for(i=1;i<=n;i++)
        cin>>m[i]>>v[i]>>w[i];
        
        memset(f,0,sizeof(f));
        
        for(i=1;i<=n;i++)
        for(j=0;j<=m[i];j++)
        for(k=v1;k>=j*v[i];k--)
        if(f[i][k]<f[i-1][k-j*v[i]]+j*w[i])
        f[i][k]=f[i-1][k-j*v[i]]+j*w[i];
        
        cout<<f[n][v1];
        return 0;
        
        }
  • 相关阅读:
    Remove Element leetcode java
    Remove Duplicates from Sorted Array leetcode java
    Container With Most Water leetcode java
    Divide Two Integers leetcode java
    N-Queens II leetcode java
    N-Queens leetcode java
    Pow(x,n) leetcode java
    Single Number II leetcode java
    Single Number leetcode java
    ROS第一次开网站跳转到公告页(任意地址跳转)方法
  • 原文地址:https://www.cnblogs.com/noip/p/2324202.html
Copyright © 2011-2022 走看看