数据结构与算法大作业:药店卖药

​本项目的代码和数据已上传至GitHub
如果对你有帮助,欢迎点亮Star

题目

实验背景

你是⼀家药店的老板,这个月你从供货商⼿⾥收到了⼀批共50个药品,其中每个药品有独立的进价和保质期,其中进价的区间为[20,30]元,保质期的剩余天数为[1,15]天。
你每天可以陈列出10个药品在商店中售卖,每天会有三个顾客各过来购买⼀个药品。
药品的定价只能为商品进价加上{-1.5,-1, -0.5, 0, 2 ,4 ,6}元,不得随意定价。
每位顾客购买的逻辑是,买其中最便宜的药品,如果说最便宜的药品价格⼀致则购买保质期⻓的药品。三位顾客会依次购买药品。药品如果没有陈列在商店中,⽽是存放在仓库时,会收取管理费,其中保质期低于5天的每天收取1元管理费,其余的每天收取0.5元。每天的陈列药品可以少于10个。
你的⽬标是,10天之后,你的利润(售出商品售价总和-售出商品进价总和-⽀付仓库的管理费⽤-10天内过期/丢弃商品的进价)最⼤。

实验要求

能够完整的模拟整个流程,给定药品的进价以及保质期,给定每天陈列的药品,可以直接得到商家的利润;
能够⾃⼰制定每天展⽰的药品策略,给定⼀定的进价和保质期的药品,能够⾃⼰指定策略,得到利润;
代码逻辑清晰,条理清楚;
代码如有抄袭,双⽅都按照0分处理。

验收步骤

  1. 模拟流程(60分)
    该步骤需要同学们能够模拟商家和顾客的⾏为,正确的得到收益。 我们会给出10个测试⽤例,每个测试⽤例中包含两个文件,⼀个是药品的文件(内含50⾏,每⾏包含进价和保质期), 药品id按照输入顺序从0~49;另⼀个是每天的策略(内含10⾏,每⾏包含10组数据,每组数据中包含⼀个药品的id, 和定价列表的索引,id=-1代表空缺);第三个文件中包含每天要丢弃的药品,内含N⾏,每⾏中包含两个数字,第⼀个是指第⼏天,第⼆个是指丢弃的药品索引
    最好能写在命令⾏参数中,如下:
./drugstore.exe -m ../data/data1/medicine.txt -s ../data/data1/strategy.txt -d
delete.txt
  1. 测试流程(40分)
    该过程需要同学们⾃⼰制定每天卖出的策略,得到⾃认为收益最好的⽅法 要求策略能够正确的实施,要能够将策略输出到文件,输出的格式与第⼀步给出的策略的格式要⼀样, 除了要输出每天要指定的策略,还要输出每天要丢弃的药品列表,同样如流程⼀中的文件格式 该步骤⼀样会给10个⽤例,该步骤的得分主要依据教辅给定收益,对于每个⽤例,如果可以超过教辅的收益,可得4分,否则:
    3.5 × ( 1 − 教辅的收益 − 你的收益 ∣ 教辅的收益 ∣ ) 3.5 \times(1-\frac{教辅的收益-你的收益}{\left | 教辅的收益 \right |}) 3.5×(1教辅的收益教辅的收益你的收益)

请同学们在实验报告中列张表,说明⾃⼰的收益与教辅收益的差别。同样希望同学们能在命令⾏参数实现相关功能,如下:

./drugstore.exe -m ../data/data1/medicine.txt -ws ../data/data1/strategy.txt -wd
../data/data1/delete.txt

实验报告

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

  • 57
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值