一个简单的思路:因为要把钱花完,买到最少数量的商品,那就从最贵的开始买。 1,先把商品价格排序,然后从end()往begin()循环; 2,每轮循环时,先把最高单价,用muchprice保存,再判断余数为0?为0就把商存到表示数量的num数组中,更新总数量res,并且break跳出循环,返回res,不为0就把商存到num数组中,更新res,余数就是还剩余的钱,判断余数是否比最小的单价还小,小的话就是钱没花完,且剩余的钱已经买不了任何商品了,就返回-1; 3,否则进行再次循环,判断剩余的钱是否比本轮循环的最高单价小,如果小的话,肯定是不能买到这个单价的商品的,那就直接conti...