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

政府网站建设北京市第一百度 营销推广怎么操作

政府网站建设北京市第一,百度 营销推广怎么操作,长春做网站建设的公司,wordpress如何备份 网站目录 前言 一、动态规划 1. 爬楼梯 2. 杨辉三角 3. 打家劫舍 4. 完全平方数 5. 零钱兑换 6. 单词拆分 7. 最长递增子序列 8. 乘积最大子数组 9. 分割等和子集 10. 最长有效括号 二、多维动态规划 11. 不同路径 12. 最小路径和 13. 最长回文子串 14. 最长公共子序列 15. 编辑距离…

目录

前言

一、动态规划

1. 爬楼梯

2. 杨辉三角

3. 打家劫舍

4. 完全平方数

5. 零钱兑换

6. 单词拆分

7. 最长递增子序列

8. 乘积最大子数组

9. 分割等和子集

10. 最长有效括号

二、多维动态规划

11. 不同路径

12. 最小路径和

13. 最长回文子串

14. 最长公共子序列

15. 编辑距离


前言

一、动态规划:爬楼梯,杨辉三角,打家劫舍,完全平方数,零钱兑换,单词拆分,最长递增子序列,乘积最大子数组,分割等和子集,最长有效括号。

二、多维动态规划:不同路径,最小路径和,最长回文子串,最长公共子序列,编辑距离。

*** Trick

动态规划步骤:1. 确定初始状态;2. 确定边界条件;3. 确定状态转移方程。

*** 常考:0-1背包问题(对应题目:9、14、15)

class Solution(object):def canPartition(self, nums):# 0-1背包问题sums = sum(nums)if sums % 2 != 0:return Falsetarget = sums // 2n = len(nums)dp = [[False] * (target+1) for _ in range(n)]dp[0][0] = Truefor i in range(1, n):dp[i][0] = Truefor j in range(1, target+1):dp[0][j] = Falsefor i in range(1, n):for j in range(1, target+1):if j >= nums[i]:dp[i][j] = dp[i-1][j] or dp[i-1][j-nums[i]]else:dp[i][j] = dp[i-1][j]return dp[n-1][target]

一、动态规划

1. 爬楼梯

原题链接:70. 爬楼梯 - 力扣(LeetCode)

# 1. 初始状态:爬到第1阶、第2届台阶的方法分别有1、2种
# 2. 确定边界条件
# 3. 动态转移方程:s(n) = s(n-1) + s(n-2)
class Solution(object):def climbStairs(self, n):s = [1, 2]   if n <=2:return s[n-1]else:for i in range(2, n):s.append(s[-1]+s[-2])return s[-1]

2. 杨辉三角

原题链接:118. 杨辉三角 - 力扣(LeetCode)

# 1. 初始状态:dp = [[1] * i for i in range(1, numRows+1)]
# 2. 边界条件:2<=i<numRows, 1<=j<numRows-2
# 3. 动态转移方程:dp[i][j] = dp[i][j-1] + dp[i][j]
class Solution(object):def generate(self, numRows):dp = [[1]*i for i in range(1, numRows+1)]if i<2:return dpfor i in range(2, numRows):for j in range(1, i):dp[i][j] = dp[i-1][j-1] + dp[i-1][j]return dp

3. 打家劫舍

原题链接:198. 打家劫舍 - 力扣(LeetCode)

class Solution(object):def rob(self, nums):nums.insert(0, 0)nums.insert(1, 0)dp = [0 for i in range(len(nums))]for i in range(2, len(nums)):dp[i] = max(dp[i-1], dp[i-2]+nums[i])return dp[-1]

4. 完全平方数

原题链接:279. 完全平方数 - 力扣(LeetCode)

# 1. 初始状态:dp = [i for i in range(n+1)]
# 2. 边界条件: wihle i-j*j >=0
# 3. 动态转移方程:dp[i] = min(dp[i-j*j]+1, dp[i])
class Solution(object):def numSquares(self, n):dp = [i for i in range(n+1)]for i in range(1, n+1):j = 1while i-j*j >= 0:dp[i] = min(dp[i-j*j]+1, dp[i])j+=1return dp[-1]

5. 零钱兑换

原题链接:322. 零钱兑换 - 力扣(LeetCode)

# 1. 初始状态:dp = [float("inf")] * (amount+1)
# 2. 边界条件:i-coin[j] >=0
# 3. 状态方程:dp[i] = min(dp[i-coin[j]] + 1, dp[i]), for j in len(coins)
class Solution(object):def coinChange(self, coins, amount):dp = [float("inf")] * (amount+1)dp[0] = 0for i in range(1, amount+1):for j in range(len(coins)):if i-coins[j] >= 0:dp[i] = min(dp[i-coins[j]] + 1, dp[i])return dp[-1] if dp[-1]!=float("inf") else -1

6. 单词拆分

原题链接:139. 单词拆分 - 力扣(LeetCode)

class Solution(object):def wordBreak(self, s, wordDict):dp = [0] + [False for i in range(1, len(s)+1)]for i in range(len(s)+1):if dp[i] == True:for j in range(i+1, len(s)+1):if s[i:j] in wordDict:dp[j] =  Truereturn dp[-1]

7. 最长递增子序列

原题链接:300. 最长递增子序列 - 力扣(LeetCode)

class Solution(object):def lengthOfLIS(self, nums):dp = [1 for i in range(len(nums))]for i in range(len(nums)):for j in range(i):if nums[i] > nums[j]:dp[i] = max(dp[j]+1, dp[i])return max(dp)

8. 乘积最大子数组

原题链接:152. 乘积最大子数组 - 力扣(LeetCode)

class Solution(object):def maxProduct(self, nums):# 初始状态:max_pre = min_pre = num[0]# 状态转移方程:max_pre = max(max_pre*nums[i]), min_pre*nums[i], nums[i])res = nums[0]max_pre = min_pre = nums[0]for i in range(1, len(nums)):max_pre_ = max_pre * nums[i]min_pre_ = min_pre * nums[i]max_pre = max(max_pre_, min_pre_, nums[i])min_pre = min(max_pre_, min_pre_, nums[i])res = max(res, max_pre)return res

9. 分割等和子集

原题链接:416. 分割等和子集 - 力扣(LeetCode)

class Solution(object):def canPartition(self, nums):# 0-1背包问题sums = sum(nums)if sums % 2 != 0:return Falsetarget = sums // 2n = len(nums)dp = [[False] * (target+1) for _ in range(n)]dp[0][0] = Truefor i in range(1, n):dp[i][0] = Truefor j in range(1, target+1):dp[0][j] = Falsefor i in range(1, n):for j in range(1, target+1):if j >= nums[i]:dp[i][j] = dp[i-1][j] or dp[i-1][j-nums[i]]else:dp[i][j] = dp[i-1][j]return dp[n-1][target]

10. 最长有效括号

原题链接:32. 最长有效括号 - 力扣(LeetCode)

class Solution(object):def longestValidParentheses(self, s):stack = [-1]res = 0for i in range(len(s)):if s[i] == '(':stack.append(i)else:stack.pop()if not stack:stack.append(i)else:res = max(res, i-stack[-1])return res

二、多维动态规划

11. 不同路径

原题链接:62. 不同路径 - 力扣(LeetCode)

class Solution(object):def uniquePaths(self, m, n):# 初始状态dp[i][0] = 1, dp[0][j] = 1# 状态转移方程:dp[i][j] = dp[i-1][j] + dp[i][j-1]dp = [[0] * n for _ in range(m)]for i in range(m):dp[i][0] = 1for j in range(n):dp[0][j] = 1for i in range(1, m):for j in range(1, n):dp[i][j] = dp[i-1][j] + dp[i][j-1]return dp[-1][-1]

12. 最小路径和

原题链接:64. 最小路径和 - 力扣(LeetCode)

class Solution(object):def minPathSum(self, grid):# dp[i][0] = dp[i-1] + grid[i][0], dp[0][j] = dp[0][j-1] + grid[0][j]# dp[i][j] = min(dp[i-1][j] + grid[i][j], dp[i][j-1]+ grid[i][j])m, n =  len(grid), len(grid[0])dp = [[0] * n for _ in range(m)]dp[0][0] = grid[0][0]for i in range(1, m):dp[i][0] = dp[i-1][0] + grid[i][0]for j in range(1, n):dp[0][j] = dp[0][j-1] + grid[0][j]for i in range(1, m):for j in range(1, n):dp[i][j] = min(dp[i-1][j] + grid[i][j], dp[i][j-1]+ grid[i][j])return dp[-1][-1]

13. 最长回文子串

原题链接:5. 最长回文子串 - 力扣(LeetCode)

class Solution(object):def longestPalindrome(self, s):n = len(s)dp = [[False] * n for _ in range(n)]start, max_len = 0, 0for right in range(n):for left in range(right+1):span = right - left + 1if span == 1:dp[left][right] = Trueelif span == 2:dp[left][right] = s[left] == s[right]else:dp[left][right] = dp[left+1][right-1] and s[left] == s[right]if dp[left][right]:if span > max_len:max_len = spanstart = leftreturn s[start: start+max_len]

14. 最长公共子序列

原题链接:1143. 最长公共子序列 - 力扣(LeetCode)

class Solution(object):def longestCommonSubsequence(self, text1, text2):# 0-1 背包问题# if t1 == t2: dp[i+1][j+1] = dp[i][j] + 1# else: dp[i+1][j+1] = max(dp[i+1][j], dp[i][j+1])m, n = len(text1), len(text2)dp = [[0]* (n+1) for _ in range(m+1)]for i, t1 in enumerate(text1):for j, t2 in enumerate(text2):if t1 == t2:dp[i+1][j+1] = dp[i][j] + 1else:dp[i+1][j+1] = max(dp[i+1][j], dp[i][j+1])return dp[-1][-1]

15. 编辑距离

原题链接:72. 编辑距离 - 力扣(LeetCode)

class Solution(object):def minDistance(self, word1, word2):# 0-1 背包问题# 动态转移方程:dp[i][j] = min(dp[i][j-1], dp[i-1][j], dp[i-1][j-1]) + 1分别对应插入、删除、替换操作"""0 r o s0   0 1 2 3h   1o   2r   3s   4e   5"""m, n = len(word1), len(word2)dp = [[0] * (n+1) for _ in range(m+1)]for i in range(1, m+1):dp[i][0] = ifor j in range(1, n+1):dp[0][j] = jfor i, w1 in enumerate(word1):for j, w2 in enumerate(word2):if w1 == w2:dp[i+1][j+1] = dp[i][j]else:dp[i+1][j+1] = min(dp[i+1][j], dp[i][j+1], dp[i][j]) + 1 return dp[-1][-1]
http://www.dtcms.com/wzjs/20207.html

相关文章:

  • 做百度手机网站关键词排名yandex搜索引擎
  • 用自己电脑做服务器 网站吗seo是搜索引擎营销
  • 汉阴做网站网络公司名字
  • 石家庄做网站的公司线上推广引流渠道
  • 做门窗网站怎么做企业培训课程ppt
  • 网站建设运营方案台州网站优化公司
  • 做网站建设怎么找客户杭州seo博客
  • 广州网站建设模板制作怎么推广销售
  • 做的网站必须放在idc机房吗百度帐号注册
  • 免费空间备案独立站seo怎么做
  • 网站被降权的原因哈尔滨最新疫情通报
  • 怎么把自己做的网站弄到域名上百度推广客户端怎么登陆
  • 做网站的有哪些公司网络营销过程步骤
  • 福州网站网页设计新闻今天
  • 动漫毕业设计作品网站产品推广软文
  • 农村建设捐款网站抖音搜索seo排名优化
  • 现货做网站网站制作流程和方法
  • 群晖wordpress站点地址优化师的工作内容
  • vps网站建设国外域名购买
  • 移动端开发平台百合seo培训
  • 广州做网站信息aso优化技术
  • 网络营销策略有哪几种厦门关键词优化平台
  • 做网站默认城市优化大师win10
  • 套做网站百度商家
  • 通辽网站建设招聘中山疫情最新消息
  • 杭州网站建设交易seo搜索引擎是什么
  • 先做网站主页还是先上架宝贝大众网疫情最新消息
  • 手机app与手机网站的区别富阳网站seo价格
  • 网站开发php还是jsp企业网站seo优化公司
  • 自己做网站买在线生成个人网站源码