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

北京网站推广怎么做旺道seo工具

北京网站推广怎么做,旺道seo工具,wordpress 免费中文模板下载地址,建设网站的申请信用卡分期文章目录 4.10 动态规划(0-1 背包问题)494. 目标和方法一:递归方法二:递推方法三:递推滚动数组方法四:递推单个数组 4.10 动态规划(0-1 背包问题) 0-1 背包问题,现在有点…

文章目录

  • 4.10 动态规划(0-1 背包问题)
    • 494. 目标和
      • 方法一:递归
      • 方法二:递推
      • 方法三:递推+滚动数组
      • 方法四:递推+单个数组

4.10 动态规划(0-1 背包问题)

  0-1 背包问题,现在有点明了了,以前只觉得高大上,现在看来就是一个固定的模型思路,体积有限,物品有限,获取在固定体积下能得到的最大的物品价值。
原视频讲解链接
在这里插入图片描述

494. 目标和

题目链接
给你一个非负整数数组 nums 和一个整数 target 。

向数组中的每个整数前添加 ‘+’ 或 ‘-’ ,然后串联起所有整数,可以构造一个 表达式 :

例如,nums = [2, 1] ,可以在 2 之前添加 ‘+’ ,在 1 之前添加 ‘-’ ,然后串联起来得到表达式 “+2-1” 。
返回可以通过上述方法构造的、运算结果等于 target 的不同 表达式 的数目。

示例 1:
输入:nums = [1,1,1,1,1], target = 3
输出:5
解释:一共有 5 种方法让最终目标和为 3 。
-1 + 1 + 1 + 1 + 1 = 3
+1 - 1 + 1 + 1 + 1 = 3
+1 + 1 - 1 + 1 + 1 = 3
+1 + 1 + 1 - 1 + 1 = 3
+1 + 1 + 1 + 1 - 1 = 3

示例 2:
输入:nums = [1], target = 1
输出:1

提示:

  • 1 <= nums.length <= 20
  • 0 <= nums[i] <= 1000
  • 0 <= sum(nums[i]) <= 1000
  • -1000 <= target <= 1000

题目解析:有一定的数学推导,具体看灵神的题解,不难理解。

方法一:递归

class Solution:def findTargetSumWays(self, nums: List[int], target: int) -> int:"""方法一:递归时间复杂度:O(nm),其中 n 为 nums 的长度,m 为 nums 的元素和减去 target 的绝对值。由于每个状态只会计算一次,动态规划的时间复杂度 = 状态个数 × 单个状态的计算时间。本题状态个数等于 O(nm),单个状态的计算时间为 O(1),所以动态规划的时间复杂度为 O(nm)。空间复杂度:O(nm)。保存多少状态,就需要多少空间。"""s = sum(nums) - abs(target)if s < 0 or s % 2:return 0m = s // 2@cache #缓存装饰器,避免重复计算 dfs 的结果def dfs(i: int, c: int) -> int:if i < 0:return 1 if c == 0 else 0if c < nums[i]:return dfs(i - 1, c)return dfs(i - 1, c) + dfs(i - 1, c - nums[i]) # 不选 + 选return dfs(len(nums) - 1, m)

方法二:递推

class Solution:def findTargetSumWays(self, nums: List[int], target: int) -> int:"""方法二:递推时间复杂度:O(nm),其中 n 为 nums 的长度,m 为 nums 的元素和减去 target 的绝对值。空间复杂度:O(nm)。保存多少状态,就需要多少空间。"""s = sum(nums) - abs(target)if s < 0 or s % 2:return 0m = s // 2n = len(nums)f = [[0] * (m + 1) for _ in range(n+1)]f[0][0] = 1for i, x in enumerate(nums):for c in range(m+1):if c < x:f[i + 1][c] = f[i][c]else:f[i + 1][c] = f[i][c] + f[i][c - x]return f[n][m]

方法三:递推+滚动数组

class Solution:def findTargetSumWays(self, nums: List[int], target: int) -> int:"""方法三:递推+滚动数组时间复杂度:O(nm),其中 n 为 nums 的长度,m 为 nums 的元素和减去 target 的绝对值。空间复杂度:O(m)。保存多少状态,就需要多少空间。"""s = sum(nums) - abs(target)if s < 0 or s % 2:return 0m = s // 2n = len(nums)f = [[0] * (m + 1) for _ in range(2)]f[0][0] = 1for i, x in enumerate(nums):for c in range(m+1):if c < x:f[(i + 1)%2][c] = f[i%2][c]else:f[(i + 1)%2][c] = f[i%2][c] + f[i%2][c - x]return f[n%2][m]

方法四:递推+单个数组

class Solution:def findTargetSumWays(self, nums: List[int], target: int) -> int:"""方法四:递推+简化数组时间复杂度:O(nm),其中 n 为 nums 的长度,m 为 nums 的元素和减去 target 的绝对值。空间复杂度:O(m)。保存多少状态,就需要多少空间。"""s = sum(nums) - abs(target)if s < 0 or s % 2:return 0m = s // 2n = len(nums)f = [1] + [0] * mfor x in nums:for c in range(m,x-1,-1):f[c] += f[c - x]return f[m]
http://www.dtcms.com/wzjs/421437.html

相关文章:

  • 郑州市城市建设委员会网站武汉seo和网络推广
  • 做ps找图的网站有哪些百度关键词搜索排名帝搜软件
  • 龙岩任做网站的哪几个比较好电销外包团队在哪找
  • 网站建设功能套餐表青岛关键词优化seo
  • jsp怎么做网站google搜索app下载
  • sqlite做网站网络整合营销是什么意思
  • 试管婴儿网站建设视频推广方案模板
  • 项目介绍ppt模板seo服务顾问
  • 网站运营软件实体店怎么推广引流
  • 做最好最全的命理网站国外网站制作
  • 无锡商业网站建设数据营销
  • 网站备案的幕布是什么来的整站优化服务
  • 营销型网站建设的优缺点企业网站优化哪家好
  • 网络购物商城网站建设百度网站收录提交
  • 广州互帮物流哪家公司做的网站资源链接搜索引擎
  • 做网站推广的一般都是什么公司怎么做推广赚钱
  • 网站建设具体日程安排百度营销是什么
  • 园林专业设计学习网站世界球队最新排名
  • 免费成品网站那里好产品软文模板
  • 企业网站建设有哪些优势百度竞价推广收费
  • 媒体网站模版浏览器大全网站
  • 浙江省建设会计协会网站拉新注册app拿佣金
  • 济南集团网站建设流程百度站长工具域名查询
  • 做企业内部网站要多久最经典最常用的网站推广方式
  • 新作的网站怎么做百度推送广东深圳疫情最新
  • wordpress防止文章被采集百度seo是什么意思
  • 网站建设中布局百度指数对比
  • 徐州营销网站建设谷歌海外推广怎么做
  • 服务好的南昌网站建设seo优化首页
  • 科技通信网站模板下载站长工具综合查询2020