zoukankan      html  css  js  c++  java
  • CD题解(药水的选择)

    这道题显然是一个01背包加上记录路径的题目,要说这道题的原型就是N多年前的CD

    本题主要考的就是对01背包的基础板子加上稍微一点点的码力,就可以A掉这个题了

    废话不多说,上代码:

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=2e3+50;
    int v[maxn],V,f[maxn],n;
    int pre[maxn][maxn];
    void solve(int V){
        for(int i=1;i<=n;i++){
            for(int j=V;j>=v[i];j--){
                if(f[j]<=f[j-v[i]]+v[i]){
                    f[j]=f[j-v[i]]+v[i];
                    pre[j][i]=1;
                }
            }
        }
        int p[maxn],tot=0,j=V;
        for(int i=n;i>=1;i--){
            if(pre[j][i]){
                p[++tot]=v[i];
                j-=v[i];
            }
        }
        for(int i=tot;i>=1;i--)cout<<p[i]<<" ";
        printf("sum:%d
    ",f[V]);
    }
    int main(){
         while(scanf("%d",&V)==1){
            scanf("%d",&n);    
            memset(f,0,sizeof(f));
            memset(pre,0,sizeof(pre));
            for(int i=1;i<=n;i++){
                scanf("%d",&v[i]);
            }
            solve(V);
         }
         return 0;
    }

    大概自己都可以看懂吧,言简意赅,不会的在评论区里评论或q我(3417018747),学会的把学会了扣在评论里(不许扣学废了)

    谢谢观看

  • 相关阅读:
    java基础>包、访问权限、命名规范
    jsp>Session
    java基础>String类
    jsp>包含指令和forward指令
    jsp>response
    word不能输入中文
    java基础>正则表达式
    EJB>一对多及多对一映射
    Struts2>运行机制
    EJB>调用存储过程
  • 原文地址:https://www.cnblogs.com/hzoi-liujiahui/p/12902084.html
Copyright © 2011-2022 走看看