当前位置: 首页 > wzjs >正文

重庆做兼职哪个网站站长工具seo综合查询访问

重庆做兼职哪个网站,站长工具seo综合查询访问,安徽网站建设论坛,西安专业做网站的公司一、零钱兑换(Leetcode 518) 1、确定dp数组以及下标的含义 使用 下标为[0, i]的coins[i]能够凑满j(包括j)这么大容量的包,有dp[i][j]种组合方法。 2、确定递推公式 dp[i][j] dp[i - 1][j] dp[i][j - nums[i]] 3.…

一、零钱兑换(Leetcode 518)

1、确定dp数组以及下标的含义

使用 下标为[0, i]的coins[i]能够凑满j(包括j)这么大容量的包,有dp[i][j]种组合方法。

2、确定递推公式

dp[i][j] = dp[i - 1][j] + dp[i][j - nums[i]]

3. dp数组初始化

dp[i][0] 的含义:用物品i(即coins[i]) 装满容量为0的背包 有几种组合方法。

都有一种方法,即不装。dp[i][0] 都初始化为1

dp[0][j]的含义:用「物品0」(即coins[0]) 装满 背包容量为j的背包,有几种组合方法。如果 j 可以整除 物品0,那么装满背包就有1种组合方法。

4. 确定遍历顺序

二维DP数组的完全背包的两个for循环先后顺序都可以。

class Solution:def change(self, amount: int, coins: List[int]) -> int:n = len(coins)dp = [[0] * (amount + 1) for _ in range(n + 1)]dp[0][0] = 1  # 0个硬币凑出金额0的方法是1种for i in range(1, n + 1):  # 遍历硬币种类for j in range(amount + 1):  # 遍历目标金额# 不选当前硬币 coins[i-1]dp[i][j] = dp[i - 1][j]# 选当前硬币(只要j >= coins[i-1])if j >= coins[i - 1]:dp[i][j] += dp[i][j - coins[i - 1]]return dp[n][amount]

一维数组解法:

1、确定dp数组以及下标的含义

dp[j]:凑成总金额j的货币组合数为dp[j]

2、确定递推公式

dp[j] += dp[j - coins[i]]

3. dp数组初始化

装满背包容量为0 的方法是1,即不放任何物品,dp[0] = 1

4. 确定遍历顺序

先物品再背包求的是组合数,先背包后物品求的是排列数!!!

求组合所以本题先物品后背包

from typing import Listclass Solution:def change(self, amount: int, coins: List[int]) -> int:# 初始化一维数组 dp,长度为 amount + 1# dp[j] 表示凑出金额 j 的组合数dp = [0] * (amount + 1)# 凑出金额为 0 只有一种方式:什么也不选dp[0] = 1# 遍历每一个硬币for coin in coins:# 遍历金额从 coin 到 amount# 只从 coin 开始是因为凑不出比硬币面额更小的金额for j in range(coin, amount + 1):# 状态转移:凑出金额 j 的方法数 += 凑出金额 j - coin 的方法数dp[j] += dp[j - coin]# 返回凑出目标金额 amount 的组合方式数return dp[amount]

二、组合总合IV(Leetcode 377)

1、确定dp数组以及下标的含义

dp[i]:凑成目标正整数为i的排列个数为dp[i]

2、确定递推公式

dp[i] += dp[i - nums[j]]

3. dp数组初始化

dp[0] = 1

4. 确定遍历顺序

先物品再背包求的是组合数,先背包后物品求的是排列数!!!

求排列所以本题先背包后物品

from typing import Listclass Solution:def combinationSum4(self, nums: List[int], target: int) -> int:# dp[i] 表示凑出和为 i 的排列个数(顺序不同算不同的组合)dp = [0] * (target + 1)# 凑出和为 0 只有一种方式:什么也不选dp[0] = 1# 从 1 到 target 遍历每一个目标值 ifor i in range(1, target + 1):# 遍历每一个数字 num,尝试使用它来构造 ifor j in range(len(nums)):if i >= nums[j]:# 如果当前目标值 i ≥ num,则可以从 i - num 的方案转移过来dp[i] += dp[i - nums[j]]# 最终结果是凑出目标和 target 的所有排列数return dp[target]

三、爬楼梯(Kamacoder 57)

1、确定dp数组以及下标的含义

dp[i]:爬到有i个台阶的楼顶,有dp[i]种方法。

2、确定递推公式

dp[i]有几种来源,dp[i - 1],dp[i - 2],dp[i - 3] 等等,即:dp[i - j],递推公式为:dp[i] += dp[i - j]

3. dp数组初始化

dp[0] = 1

4. 确定遍历顺序

先物品再背包求的是组合数,先背包后物品求的是排列数!!!

求排列所以本题先背包后物品

def solve(n, m):dp = [0] * (n + 1)dp[0] = 1for j in range(1, n + 1):for i in range(1, m + 1):if j >= i:dp[j] += dp[j - i]return dp[n]if __name__ == '__main__':n, m = list(map(int, input().split(' ')))print(solve(n, m))

四、零钱兑换(Leetcode 322)

1、确定dp数组以及下标的含义

dp[j]:凑足总额为j所需钱币的最少个数为dp[j]

2、确定递推公式

凑足总额为 j - coins[i] 的最少个数为dp[j - coins[i]],那么只需要加上一个钱币coins[i]即dp[j - coins[i]] + 1就是dp[j]

所以dp[j] 要取所有 dp[j - coins[i]] + 1 中最小的。

递推公式:dp[j] = min(dp[j - coins[i]] + 1, dp[j]);

3. dp数组初始化

dp[0] = 0

dp[j]应该初始化为一个最大的数float('inf'),这样在min(dp[j - coins[i]] + 1, dp[j])比较的过程中保持更新

所以下标非0的元素都初始化为最大值float('inf')。

4. 确定遍历顺序

先物品再背包求的是组合数,先背包后物品求的是排列数!!!

本题并不强调集合是组合还是排列,习惯先物品后背包

from typing import Listclass Solution:def coinChange(self, coins: List[int], amount: int) -> int:# 初始化 dp 数组,长度为 amount + 1,初始值为正无穷(代表初始无法到达)# dp[i] 表示凑出金额 i 所需的最少硬币数dp = [float('inf')] * (amount + 1)# 凑出金额 0 所需的硬币数为 0dp[0] = 0# 遍历每一种硬币for coin in coins:# 对每一个从 coin 到 amount 的金额 j 进行遍历for j in range(coin, amount + 1):# 状态转移方程:如果 j - coin 可以被凑出# 则 j 也可以被凑出,其所需硬币数为 dp[j - coin] + 1dp[j] = min(dp[j], dp[j - coin] + 1)# 如果最终凑不出 amount 金额,返回 -1;否则返回最小硬币数return dp[amount] if dp[amount] != float('inf') else -1
http://www.dtcms.com/wzjs/85119.html

相关文章:

  • 网站模板 站长之家广东疫情最新数据
  • 建设网站哪家比较好网站建设排名优化
  • 玉林做网站的公司网站排名费用
  • 网站策划怎么做赣州seo外包怎么收费
  • 做动态的网站武汉网站推广公司
  • 企业宣传网站方案口碑营销的成功案例
  • 旅游网站设计策划书网店推广的渠道有哪些
  • 建设法律法规文本查询网站seo网站优化技术
  • 做靠谱的网络兼职网站长沙县网络营销咨询
  • 织梦建站教程发布新闻的平台有哪些
  • 牌具做网站可以吗如何在百度上建立网站
  • 公司网站条形码如何做怎么做网络推广优化
  • 临安营销型网站建设网络搜索引擎
  • ps做电商网站流程图网站推广系统
  • 八大恶心的网站制作乱码链接怎么用
  • 做不好的网站违法吗网络营销的八大职能
  • wordpress 占用内存高seo推广的网站和平台有哪些
  • 做平面设计兼职的网站什么是seo技术
  • 国外做黄漫的网站有哪些seo优化方案
  • 网站开发管理招聘百度推广下载安装
  • 营销型网站模板成都正规搜索引擎优化
  • 没有独立网站淘宝客推广怎么做网络推广公司名字大全
  • 斐讯n1 WordPress网站怎样优化seo
  • 哪里网站建设专业商丘网站优化公司
  • 工信部网站登陆制作网页模板
  • 网站建设网址网络推广发帖网站
  • 自己怎么做淘宝网站宽带营销策略
  • 乌鲁木齐网站制作公司推荐湖南长沙今日疫情
  • 中山企业网站建设方案济南seo整站优化招商电话
  • 网站优化文章怎么做百度号注册官网