zoukankan      html  css  js  c++  java
  • 1017

    题目大意:

    给出背包能装的骨头容量,给出每个骨头所占容积,和价值,求出背包所能装骨头的最大价值

    解题思路:

    每个骨头开始遍历,如果背包容量能盛下这个骨头,那就看是否当前容量下的价值,是否比“没加当前骨头容量的价值,加上当前骨头的价值”的价值大,否则就拿上这块骨头

    代码:

    #include<iostream>
    #include<string.h>
    #include<stdio.h>
    using namespace std;
    int val[1005];
    int vol[1005];
    int dp[1005];
    int main(){
        int t;
        int n,v;
        cin>>t;
        while(t--){
            cin>>n>>v;
            memset(dp,0,sizeof(dp));
            for(int i=1;i<=n;i++)cin>>val[i];
            for(int i=1;i<=n;i++)cin>>vol[i];
            for(int i=1;i<=n;i++){
                for(int j=v;j>=vol[i];j--){
                    if(dp[j]<dp[j-vol[i]]+val[i])  
                        dp[j]=dp[j-vol[i]]+val[i]; 
                }
            }
            cout<<dp[v]<<endl;
        }
        return 0;
    } 
  • 相关阅读:
    数据放在服务端和客户端的利与弊
    python异步I/O并发
    view
    mysql千万或者上亿的数据怎么设计数据库
    Django(一)
    JQuery
    BOM与DOM
    JavaScript
    CSS(二)
    CSS介绍
  • 原文地址:https://www.cnblogs.com/Sikaozhe/p/5532912.html
Copyright © 2011-2022 走看看