[洛谷]P1077 [NOIP2012 普及组] 摆花(dp)
发布人:shili8
发布时间:2025-01-21 17:19
阅读次数:0
**摆花**
**题目描述**
小明想在他的院子里摆放一些花,他有 n 个位置可以摆放花,每个位置都有一个花的价格. 小明希望能找到一种方式,使得他能够用最少的钱来摆放所有的花.
**问题**
给定一个整数 n 和一个长度为 n 的数组 prices, 其中 prices[i] 表示第 i 个位置的花的价格. 小明想在每个位置都摆放一朵花,并且希望能找到一种方式,使得他能够用最少的钱来摆放所有的花.
**输出**
输出一个整数,表示小明需要用的最少的钱.
**示例**
输入: n =3, prices = [1,2,3]
输出:6**代码实现**
def minCost(n, prices): # 创建一个长度为 n 的数组,用于存储每个位置的花的价格 dp = [0] * (n +1) # 初始化第一个位置的花的价格 dp[1] = prices[0] # 遍历从第二个位置到最后一个位置 for i in range(2, n +1): # 计算当前位置的花的价格为前两个位置的花的价格之和时所需的最少钱 dp[i] = min(dp[i-1], dp[i-2]) + prices[i-1] # 返回最后一个位置的花的价格为前两个位置的花的价格之和时所需的最少钱 return dp[n] # 测试代码n =3prices = [1,2,3] print(minCost(n, prices)) # 输出:6
**注释**
* `dp` 是一个长度为 n+1 的数组,用于存储每个位置的花的价格.
* `dp[1]` 初始化第一个位置的花的价格.
* 遍历从第二个位置到最后一个位置,计算当前位置的花的价格为前两个位置的花的价格之和时所需的最少钱.
* 最后返回最后一个位置的花的价格为前两个位置的花的价格之和时所需的最少钱.
**时间复杂度**
* 时间复杂度为 O(n),其中 n 是输入数组 prices 的长度.
**空间复杂度**
* 空间复杂度为 O(n),其中 n 是输入数组 prices 的长度.