大家好,又见面了,我是你们的朋友全栈君。题目描述
一个淘宝的订单中包含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
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/142437.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...