编程之美--饮料供货
共有n种饮料,每种饮料都有自己的名字、1瓶这种饮料对应的容量(单位:L)、可供应这种饮料的最大数量、以及1瓶此种饮料的满意度、实际购买这种饮料的瓶数。
我们定义一个表示饮料的结构体。分别用name、capacity、maxNumber、happiness、purchaseNumber对应以上属性。
问题要求:给定可提供饮料的最大供应量totalSupport(单位为L),要求饮料购买方案,使得购买方案对应的满意度最大。
解决方法:
应用动态规划求解,
假设用satisfy[n][L]表示在最大供应量为L的情况下,选择前n种饮料是的购买方案对应的最大满意度。则
satisfy[i][j] 就表示在最大供应量为j的情况下,选择前i中饮料的购买方案对应的最大满意度,并且有:
如果 j < capacity;satisfy[i][j] = satisfy[i - 1][j]
如果 j > capacity;satisfy[i][j] = max{satisfy[i - 1][j - k * capacity] + k * happiness, k =