第1页共12页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第1页共12页超市POS机付款问题一、问题描述超市付款问题超市的自动柜员机(POS机)要找给顾客数量最少的现金
请设计算法解决这种付款优化问题
(提示:试写出用动态规划、贪心法等算法策略来解决该问题,找出多个付款方案、并分析程序运行结果和给出算法的复杂性分析
)二、问题分析超市的自动柜员机(POS机)要找给顾客数量最少的现金
例如要找4元6角,如果POS机送出一大堆硬币,比如46个1角钱,就太麻烦了,而最好找2个2元、1个5角和1个1角的
动态规划:假定POS机中有n张面值为Pi(1≤i≤n)的货币,用集合P={p1,p2,
,pn}表示,如POS机需支付的现金为A,那么,它必须从P中选取一个最小子集S,使得pi∈s,∑i=1mpi=A(m=|S|)(1)如果用向量X=(x1,x2,
,xn)表示S中所选取的货币,则xi={01pi∉spi∈S(2)那么,POS机支付的现金必须满足∑i=1nxipi=A(3)并且第2页共12页第1页共12页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第2页共12页d=min∑i=1nxi(4)在上述问题中集合P是该问题的输入,满足式(1)和解称为可行解,式(2)是解的表现形式,因为向量X中有n个元素,每个元素的取值为0或1,所以,可以有2n个不同的向量,所有这些向量的全体构成该问题的解空间,式(3)是该问题的约束条件,式(4)是该问题的目标函数,使式(4)取得极小值的解称为该问题的最优解
对POS机付款问题:(1)count[i]表示凑合数量为i所需最少的钱币数量,即最优值
(2)则count[i]=min{count[i-T[j]]+1}(原问题分段)
(3)其中0