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

建设商务网站的方案enfold wordpress

建设商务网站的方案,enfold wordpress,怀宁网站建设,怎么用sharepoint做网站具有「线性」阶段划分的动态规划方法统称为线性动态规划(简称为「线性 DP」),如下图所示。 一、概念 如果状态包含多个维度,但是每个维度上都是线性划分的阶段,也属于线性 DP。比如背包问题、区间 DP、数位 DP 等都属…

具有「线性」阶段划分的动态规划方法统称为线性动态规划(简称为「线性 DP」),如下图所示。

一、概念

如果状态包含多个维度,但是每个维度上都是线性划分的阶段,也属于线性 DP。比如背包问题、区间 DP、数位 DP 等都属于线性 DP。

线性 DP 问题的划分方法有多种方式。

  • 如果按照「状态的维度数」进行分类,我们可以将线性 DP 问题分为:一维线性 DP 问题、二维线性 DP 问题,以及多维线性 DP 问题。
  • 如果按照「问题的输入格式」进行分类,我们可以将线性 DP 问题分为:单串线性 DP 问题、双串线性 DP 问题、矩阵线性 DP 问题,以及无串线性 DP 问题。

二、单串线性 DP 问题

1. 问题

单串线性 DP 问题:问题的输入为单个数组或单个字符串的线性 DP 问题。状态一般可定义为 dp[i],表示为:

  1. 「以数组中第 i个位置元素 nums[i]] 为结尾的子数组(nums[0]...nums[i])」的相关解。
  2. 「以数组中第 i−1个位置元素 nums[i−1]为结尾的子数组(nums[0]...nums[i−1])」的相关解。
  3. 「以数组中前 i个元素为子数组(nums[0]...nums[i−1])」的相关解

这 3 种状态的定义区别在于相差一个元素 nums[i]。

  1. 第 1种状态:子数组的长度为 i+1,子数组长度不可为空;
  2. 第 2 种状态、第 3 种状态:这两种状态描述是相同的。子数组的长度为 i,子数组长度可为空。在 i=0时,方便用于表示空数组(以数组中前 0 个元素为子数组)

三、最长递增子序列

单串线性 DP 问题中最经典的问题就是「最长递增子序列(Longest Increasing Subsequence,简称 LIS)」。

1. 实战练习

给定一个整数数组 nums,找到其中最长严格递增子序列的长度

  • 子序列:由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。
  • 1≤nums.length≤2500。
  • −10^4≤nums[i]≤10^4。

2. 代码

class Solution {// 定义长度最长递增子序列的方法lengthOfLIS(nums) {// 获取数组的长度const size = nums.length;// 创建并初始化动态规划数组,初始值为1const dp = new Array(size).fill(1);// 外层循环迭代每个元素for (let i = 0; i < size; i++) {// 内层循环迭代当前元素之前的元素for (let j = 0; j < i; j++) {// 如果当前元素大于之前的元素,可以将当前元素加入递增子序列if (nums[i] > nums[j]) {// 更新以当前元素结尾的递增子序列的长度dp[i] = Math.max(dp[i], dp[j] + 1);}}}// 返回动态规划数组中的最大值,即为最长递增子序列的长度return Math.max(...dp);}
}// 示例用法
const solution = new Solution();
// 输出最长递增子序列的长度
console.log(solution.lengthOfLIS([10, 9, 2, 5, 3, 7, 101, 18]));

四、最大子数组和

单串线性 DP 问题中除了子序列相关的线性 DP 问题,还有子数组相关的线性 DP 问题。

注意

  • 子序列:由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。
  • 子数组:指的是数组中的一个连续子序列。

「子序列」与「子数组」都可以看做是原数组的一部分,而且都不会改变原来数组中元素的相对顺序。其区别在于数组元素是否要求连续。

1. 实战练习

给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和

2. 代码

class Solution {maxSubArray(nums) {// 获取数组的长度const size = nums.length;// 创建并初始化动态规划数组,初始值为0const dp = new Array(size).fill(0);// 初始化动态规划数组的第一个元素dp[0] = nums[0];// 从数组的第二个元素开始遍历for (let i = 1; i < size; i++) {// 如果前一个元素的动态规划值小于0,说明不利于累积当前元素,直接以当前元素为起点重新计算if (dp[i - 1] < 0) {dp[i] = nums[i];} else {// 否则,累积当前元素,更新动态规划值dp[i] = dp[i - 1] + nums[i];}}// 返回动态规划数组中的最大值,即为最大子数组和return Math.max(...dp);}
}// 示例用法
const solution = new Solution();
// 输出最大子数组和
console.log(solution.maxSubArray([-2, 1, -3, 4, -1, 2, 1, -5, 4]));

五、最长的斐波那契子序列的长度

有一些单串线性 DP 问题在定义状态时需要考虑两个结束位置,只考虑一个结束位置的无法清楚描述问题。这时候我们就需要需要增加一个结束位置维度来定义状态

1. 实战练习

给定一个严格递增的正整数数组 arr,从数组 arr 中找出最长的斐波那契式的子序列的长度。如果不存斐波那契式的子序列,则返回 0。

2. 代码

class Solution {lenLongestFibSubseq(arr) {const size = arr.length;let ans = 0;// 枚举所有可能的前两个数for (let i = 0; i < size; i++) {for (let j = i + 1; j < size; j++) {let tempAns = 0;let tempI = i;let tempJ = j;let k = j + 1;// 在数组中搜索斐波那契子序列while (k < size) {// 如果当前三个数满足斐波那契关系if (arr[tempI] + arr[tempJ] === arr[k]) {tempAns += 1;tempI = tempJ;tempJ = k;}k += 1;}// 更新最大斐波那契子序列长度if (tempAns > ans) {ans = tempAns;}}}// 如果找到了斐波那契子序列,返回长度加上初始的两个数if (ans > 0) {return ans + 2;} else {return ans;}}
}// 示例用法
const solution = new Solution();
// 输出最长斐波那契子序列的长度
console.log(solution.lenLongestFibSubseq([1, 2, 3, 4, 5, 6, 7, 8])); 


文章转载自:

http://l30BElEY.mnkhk.cn
http://6iPtdYvH.mnkhk.cn
http://Jw11lUjl.mnkhk.cn
http://FUikR4YN.mnkhk.cn
http://GoF9M2bm.mnkhk.cn
http://eURITjMO.mnkhk.cn
http://pVLegHGN.mnkhk.cn
http://v88nZypg.mnkhk.cn
http://ArKtRdMX.mnkhk.cn
http://gDFpH9u1.mnkhk.cn
http://7rmVWZYS.mnkhk.cn
http://quBGeTvB.mnkhk.cn
http://A7ZQ5zdH.mnkhk.cn
http://HH8wh6yn.mnkhk.cn
http://utUl2Q80.mnkhk.cn
http://BoeTiEID.mnkhk.cn
http://7ow0Eqf1.mnkhk.cn
http://J0CrShqq.mnkhk.cn
http://JitwcleU.mnkhk.cn
http://jmLlXDkZ.mnkhk.cn
http://uod6XaPh.mnkhk.cn
http://sbhUcwcG.mnkhk.cn
http://snp4ClnI.mnkhk.cn
http://8KEw0kD7.mnkhk.cn
http://kw6tkMCH.mnkhk.cn
http://RGYKnU4H.mnkhk.cn
http://blFs9SGv.mnkhk.cn
http://w7xfeBBQ.mnkhk.cn
http://1eX5r2C8.mnkhk.cn
http://RS2pwC8Z.mnkhk.cn
http://www.dtcms.com/wzjs/710186.html

相关文章:

  • 舟山做网站公司j2ee网站开发教程
  • 商城类网站建设 数据库武隆网站建设费用
  • 用什么软件写网站网站推广的途径和方法
  • 北京网站开发网站建设报价上海建网站服务器
  • 网站建设公司网站模版怎么弄网站做网站卖东西
  • 正规网站建设费用综合网站开发实训总结
  • 附近网站建设公司哪家好网络营销的特点包含
  • 成都专业手机网站建设服务ftp给网站上传图片后图片的链接地址被改了
  • 哪个建站软件比较好带论坛深圳十大网络推广公司排名
  • 云南网站推广的目的社区网站建设难点
  • 威龙电子商务做的网站域名网站开发有意义吗
  • google chrome download广东网站建设seo优化制作设计
  • WordPress开网站很慢附近装修公司地址电话
  • 设计网站页面设计西安旅游攻略2天自由行攻略
  • 如何改wordpress网站图标wordpress登录无效用户名
  • 国外设计案例网站无锡网站建设f7wl
  • 做这个网站多少钱pc网站开发微信支付
  • 网站百度指数苏州互联网招聘
  • p2p贷款网站开发网站建设中敬请期待 图片
  • 温州网站关键词排名优化湖南长沙门户网站
  • 蒙自网站开发网站的优势
  • 网站建设策划实施要素有什么网站可以接活做设计
  • 做个网站成本网站备案提交
  • 中冶建设网站邯郸seo优化公司
  • 宁波网站建设营销定制网络营销师报名入口
  • 怎么访问域名网站吗网站重新设计
  • 怎样做网站教程做交互的设计网站
  • 网站多域名建站服务外贸
  • 软件公司招聘网站wordpress友情链接激活
  • 开通公司网站怎么开通企业标志logo设计免费