你在网上买了一堆商品,比如说,你买了2件T恤,每件10块,5件袜子,每双5块,还有1个帽子,8块钱。但是呢,商家有个促销活动,买得越多,单价就越便宜。比如,T恤买3件以上,每件就变成9块了。这时候,怎么算出你这一单的最少花费呢?
商品价格可能会因为购买数量的不同而有所变化(购买数量越多,单价可能越便宜)
这种情况下,就可以用动态规划的方法,帮商家算出给你的最优价格
下面是一个Golang的实现例子:
package mainimport "fmt"// 商品结构体,包含单价和购买数量
type Product struct {单价 float64数量 int
}// 计算订单总价的函数
func calculateTotalPrice(products []Product) float64 {// 定义动态规划数组,初始化为最大值dp := make([][]float64, len(products)+1)for i := range dp {dp[i] = make([]float64, 2)dp[i][0] = float64(1<<31) - 1 // 初始化为一个非常大的数}// 初始化第一个商品的价格dp[0][1] = products[0].单价 * float64(products[0].数量)// 动态规划填表过程for i := 1; i < len(products); i++ {f