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
  • 相关阅读:
    End of 2007, where are you?
    2007年,前进!
    PHP框架Yii快速搭建高并发网站
    需要 gmail 与 wallop 邀请的 请留言给 email
    开始关注Mono了
    百度,阿里巴巴,google
    重返 cnblogs.com
    解决VMware虚拟机桥接不能上网的问题
    SecureCRT
    linux的ssh和sshd配置
  • 原文地址:https://www.cnblogs.com/eat-too-much/p/14920196.html
Copyright © 2011-2022 走看看