阿里笔试题目

题目描述
一个淘宝的订单中包含n(10>=n>=1)种商品A1,A2,…,An,每种商品数量分别为a1,a2,…,an个,记做{a1,a2,…,an}(ak>0)。订单在仓库生产过程中,仓库为了提升作业效率,会提前对热门组合商品进行预包装。假设这n个商品有m(9>=m>=1)个商品组合,每个组合bomk包含A1,A2,…,An的数量分别为{b1,b2,…,bn}(bk>=0,至少存在一个bk>0)


举例如下:


订单包含A,B,C商品,数量为{2,3,1},商品组合bom1{2,1,1},bom2{1,1,0},bom3{0,1,1}


对以上订单匹配给定商品组合,得到的可能匹配结果为:res1.匹配到组合1一套,剩余B商品;res2.匹配到组合2两套,组合3一套,不剩商品;


现要求订单的最优匹配,最优匹配的原则为:1.匹配组合后,剩余商品种类数越少越好;2.在剩余商品种类数相同的情况下,匹配到的组合种类数越少越好;


例如上面例子,我们认为res2优于res1。


现需要编写程序,输入格式为:


n,m


a1,a2,…,an


bom1,b11,b12,…,b1n


bom2,b21,b22,…,b2n


….


bomm,bm1,bm2,…,bmn


输入数据的格式说明(数据间使用英文逗号分隔):


第一行数据:n个商品,m个预包方案


第二行数据:商品1个数,商品2个数,。。。,商品n个数


第三行数据:bom1,商品1个数,商品2个数,。。。,商品n个数


第n-1行数据:。。。。


第n行数据:bomn,商品1个数,商品2个数,。。。,商品n个数


针对输入数据找出最优匹配,输出最优匹配的组合及套数,比如针对上面的例子输出:


match result:


bom2*2,bom3*1






评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值