zoukankan      html  css  js  c++  java
  • 华为机试 购物单

    简介

    购物单
    有点没有讲清楚, 对于编号没有讲清楚. 不过还是挺复杂的. 看题解是, 有约束的背包问题.

    code

    代码抄的, 不过有点理解了

    #include<iostream>
    #include<vector>
    using namespace std;
    int max(int m, int n)
    {
        return m>n?m:n;
    }
    int dp[3200];
    int main()
    {
        int N,n,v,p,q;
        cin >> N >> n;
        N = N/10;
     
        int *ZJ_Pri = new int[n+1]();  int *ZJ_Imp = new int[n+1]();
        int *FJ1_Pri = new int[n+1](); int *FJ1_Imp = new int[n+1]();
        int *FJ2_Pri = new int[n+1](); int *FJ2_Imp = new int[n+1]();
     
        for(int i=1; i<=n; i++)
        {
            cin >> v >> p >> q;
            v = v / 10;
            if(q == 0)
            {
                ZJ_Pri[i] = v;
                ZJ_Imp[i] = v * p;
            }
            else if(FJ1_Pri[q] == 0)
            {
                FJ1_Pri[q] = v;
                FJ1_Imp[q] = v * p;
            }
            else
            {
                FJ2_Pri[q] = v;
                FJ2_Imp[q] = v * p;
            }
        }
        for(int i = 1; i <= n; i++)//i---前i个物品
        {
            for(int j = N; j >=1; j--)//j--当前的钱数
            {
                if(j >= ZJ_Pri[i])
                    dp[j] = max(dp[j], dp[ j-ZJ_Pri[i] ] + ZJ_Imp[i]);
                if(j >= ZJ_Pri[i] + FJ1_Pri[i])
                    dp[j] = max(dp[j], dp[ j-ZJ_Pri[i]-FJ1_Pri[i] ] + ZJ_Imp[i] + FJ1_Imp[i]);
                if(j >= ZJ_Pri[i] + FJ2_Pri[i])
                    dp[j] = max(dp[j], dp[ j-ZJ_Pri[i]-FJ2_Pri[i] ] + ZJ_Imp[i] + FJ2_Imp[i]);
                if(j >= ZJ_Pri[i] + FJ1_Pri[i] + FJ2_Pri[i])
                    dp[j] = max(dp[j], dp[ j-ZJ_Pri[i]-FJ1_Pri[i]-FJ2_Pri[i] ] + ZJ_Imp[i] + FJ1_Imp[i] + FJ2_Imp[i]);
            }
        }
        cout << dp[N]*10 << endl;
     
        delete[] ZJ_Pri;
        delete[] ZJ_Imp;
        delete[] FJ1_Pri;
        delete[] FJ1_Imp;
        delete[] FJ2_Pri;
        delete[] FJ2_Imp;
     
        return 0;
    }
    
    Hope is a good thing,maybe the best of things,and no good thing ever dies.----------- Andy Dufresne
  • 相关阅读:
    Charles的使用教程
    Sublime Text 3 无法使用package control安装插件解决办法
    sublime常用快捷键整理(未完待续)
    常用 Git 命令清单
    js判断的执行顺序
    使用CSS3 Media Queries实现网页自适应(转)
    移动前端开发之viewport的深入理解(转)
    javascript之函数节流
    String常用方法总结
    腾讯面试题1
  • 原文地址:https://www.cnblogs.com/eat-too-much/p/14920196.html
Copyright © 2011-2022 走看看