华为OJ(购物单)
来源:互联网 发布:大数据金融的特点 编辑:程序博客网 时间:2024/06/05 04:23
输入的第 1 行,为两个正整数,用一个空格隔开:N m
(其中 N ( <32000 )表示总钱数, m ( <60 )为希望购买物品的个数。)
从第 2 行到第 m+1 行,第 j 行给出了编号为 j-1 的物品的基本数据,每行有 3 个非负整数 v p q
(其中 v 表示该物品的价格( v<10000 ), p 表示该物品的重要度( 1 ~ 5 ), q 表示该物品是主件还是附件。如果 q=0 ,表示该物品为主件,如果 q>0 ,表示该物品为附件, q 是所属主件的编号)
输出文件只有一个正整数,为不超过总钱数的物品的价格与重要度乘积的总和的最大值( <200000 )。
#include<iostream>using namespace std;struct goods{int price;int w;int type;};const int Max=20;goods a[Max];int count_value(int,int,int);int number;int main(){int n;cin>>n;cin>>number;for(int i=0;i<number;i++){cin>>a[i].price;cin>>a[i].w;cin>>a[i].type;}cout<<count_value(0,n,1);//system("pause");return 0;}int count_value(int index,int money,int f){int t1=0,t2=0;if(index>=number)return 0;if(a[index].type==0){if(money>=a[index].price){t1=count_value(index+1,money-a[index].price,1)+a[index].price*a[index].w;t2=count_value(index+1,money,0);return t1>t2?t1:t2;}elsereturn count_value(index+1,money,0);}else if((a[index].type!=0)&&(f==1)){if(money>=a[index].price)t1=count_value(index+1,money-a[index].price,f)+a[index].price*a[index].w;t2=count_value(index+1,money,f);return t1>t2?t1:t2;}elsereturn count_value(index+1,money,0);}
0 0
- 华为OJ(购物单)
- 华为oj 购物单
- 华为oj 购物单
- 华为oj 购物单
- 华为OJ购物单
- 华为OJ---购物单
- 【华为OJ】【068-购物单】
- 华为oj--中级--购物单
- 华为oj中级 购物单
- 【ACM】华为oj--购物单(01背包变种)
- 华为oj-购物单(依赖背包问题)
- 华为OJ中级题-设计购物单
- 华为OJ——购物单
- OJ--购物单
- 华为OJ 购物结算系统
- 华为机试:购物单
- 华为oj上的购物单问题,背包问题的变种,动态规划
- 华为上机试---购物单(算法:背包问题)
- mysql自增id归0的方法
- java中的向上转型和向下转型
- 自驾五千公里后
- Handler机制的初步理解
- Objective-C NSDate的使用
- 华为OJ(购物单)
- 用一枚实名戒指来弥补我对你的爱
- I2C总线深入理解
- 你所不知道的foreach
- 思科多nat顺序
- JavaWeb中实现删除修改
- [leetcode] 22.Generate Parentheses
- 在android设备上获取内网IP
- IP地址的分类 公有地址和私有地址 子网掩码