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

商丘网站建设费用新手卖家做来赞达网站如何

商丘网站建设费用,新手卖家做来赞达网站如何,邯郸高端网站建设,城建网官网12319动态规划 动规五部曲: 确定dp数组以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组 70. 爬楼梯 - 力扣(LeetCode) 爬到第一层楼梯有一种方法,爬到二层楼梯有两种方法。 那么第一层楼梯再跨两步就到第三…

动态规划

动规五部曲:

  1. 确定dp数组以及下标的含义
  2. 确定递推公式
  3. dp数组如何初始化
  4. 确定遍历顺序
  5. 举例推导dp数组

70. 爬楼梯 - 力扣(LeetCode)

爬到第一层楼梯有一种方法,爬到二层楼梯有两种方法。

那么第一层楼梯再跨两步就到第三层 ,第二层楼梯再跨一步就到第三层。

所以到第三层楼梯的状态可以由第二层楼梯 和 到第一层楼梯状态推导出来,那么就可以想到动态规划了。

我们来分析一下,动规五部曲:

定义一个一维数组来记录不同楼层的状态

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

dp[i]: 爬到第i层楼梯,有dp[i]种方法

  1. 确定递推公式

如何可以推出dp[i]呢?

从dp[i]的定义可以看出,dp[i] 可以有两个方向推出来。

首先是dp[i - 1],上i-1层楼梯,有dp[i - 1]种方法,那么再一步跳一个台阶不就是dp[i]了么。

还有就是dp[i - 2],上i-2层楼梯,有dp[i - 2]种方法,那么再一步跳两个台阶不就是dp[i]了么。

那么dp[i]就是 dp[i - 1]与dp[i - 2]之和!

所以dp[i] = dp[i - 1] + dp[i - 2] 。

在推导dp[i]的时候,一定要时刻想着dp[i]的定义,否则容易跑偏。

class Solution {public int climbStairs(int n) {if(n==1||n==2) return n;int[] dp=new int[n+1];dp[0]=1;dp[1]=1;//dp[2]应该是2dp[2]=2;for(int i=3;i<=n;i++){dp[i]=dp[i-1]+dp[i-2];}return dp[n];}
}

746. 使用最小花费爬楼梯 - 力扣(LeetCode)

题目没说明白,脑残的很

class Solution {public int minCostClimbingStairs(int[] cost) {//这个题他爹的有毛病 cost的长度是n 但是楼梯下标要到n 长度为n+1 if(cost.length==2) return Math.min(cost[0],cost[1]);//只有1极楼梯int n=cost.length;//dp表示到达此处的最小花费int[] dp=new int[n+1];dp[0]=0;dp[1]=0;//因为可以选择从0或者1出发for(int i=2;i<=n;i++){dp[i]=Math.min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]);}return dp[n];}
}

 63. 不同路径 II - 力扣(LeetCode)

和62不同路径一样 先初始化横竖两排,然后判断一下有障碍的地方dp就是0

class Solution {public int uniquePathsWithObstacles(int[][] obstacleGrid) {int m=obstacleGrid.length;int n=obstacleGrid[0].length;int[][] dp=new int[m][n];//如果第一行或第一列中存在障碍物,那么障碍物之后的路径数量应该是0,而不是1。for(int i=0;i<obstacleGrid.length;i++){if(obstacleGrid[i][0]==0){dp[i][0]=1;}else{break;}}for(int j=0;j<obstacleGrid[0].length;j++){if(obstacleGrid[0][j]==0){dp[0][j]=1;}else{break;}}for(int i=1;i<m;i++){for(int j=1;j<n;j++){if(obstacleGrid[i][j]!=1){dp[i][j]=dp[i-1][j]+dp[i][j-1];}else{dp[i][j]=0;}}}return dp[m-1][n-1];}
}

 

 118. 杨辉三角 - 力扣(LeetCode)

class Solution {public List<List<Integer>> generate(int numRows) {List<List<Integer>> res=new ArrayList<>();res.add(List.of(1));for(int i=1;i<numRows;i++){List<Integer> row=new ArrayList<>(i+1);//i+1是元素数量//第一个是1row.add(1);for (int j = 1; j < i; j++) {// 左上方的数 + 正上方的数row.add(res.get(i - 1).get(j - 1) + res.get(i - 1).get(j));}//最后一竖是1row.add(1);res.add(row);}return res;}
}

**343. 整数拆分 - 力扣(LeetCode) 

class Solution {public int integerBreak(int n) {//dp[i] 为正整数 i 拆分后的结果的最大乘积int[] dp = new int[n+1];dp[1]=1;dp[2]=1;for(int i = 3; i <= n; i++) {for(int j = 1; j < i;j++) {//如果在比较最大值的时候不包括dp[i],那有可能越比越小,倒把一开始找到的最大值给弄丢了dp[i] = Math.max(dp[i], Math.max(j*(i-j), j*dp[i-j]));// j * (i - j) 是单纯的把整数 i 拆分为两个数 也就是 i,i-j ,再相乘//而j * dp[i - j]是将 i 拆分成两个以及两个以上的个数,再相乘。}}return dp[n];}
}

 

 198. 打家劫舍 - 力扣(LeetCode)

动态规划的的四个解题步骤是:

  • 定义子问题
  • 写出子问题的递推关系
  • 确定 DP 数组的计算顺序
  • 空间优化(可选)
class Solution {public int rob(int[] nums) {if(nums.length==1) return nums[0];if(nums.length==2) return Math.max(nums[0],nums[1]);//只有两种状态 偷窃或者不偷窃int[] dp=new int[nums.length];//表示两种状态中最大获利dp[0]=nums[0];//    dp[1]=nums[1];不对哦dp[1]=Math.max(dp[0],nums[1]);//列出状态转移方程for(int i=2;i<nums.length;i++){dp[i]=Math.max(dp[i-1],dp[i-2]+nums[i]);}return dp[nums.length-1];}
}

首先「完全平方数」有无限个,但要凑成的数字是给定的。

所以首先把所有可能用到的「物品」预处理出来。

从而将问题转换为:给定了若干个数字,每个数字可以被使用无限次,求凑出目标值n所需要用到的是最少数字个数是多少。

152. 乘积最大子数组 - 力扣(LeetCode)

class Solution {public int maxProduct(int[] nums) {int max = Integer.MIN_VALUE, imax = 1, imin = 1;for(int i=0; i<nums.length; i++){if(nums[i] < 0){ 
//由于存在负数,那么会导致最大的变最小的,最小的变最大的。因此还需要维护当前最小值imin 
//在出现负数这种危机关头计算最大最小int tmp = imax;imax = imin;imin = tmp;}imax = Math.max(imax*nums[i], nums[i]);//一旦前面有负数就放弃曾经的一切imin = Math.min(imin*nums[i], nums[i]);max = Math.max(max, imax);}return max;}
}


文章转载自:

http://Ap7FXJBD.sryhp.cn
http://Oi3MHoMy.sryhp.cn
http://eSG7DzdR.sryhp.cn
http://n1zY5bQW.sryhp.cn
http://bsN3aP7Z.sryhp.cn
http://4wxuEvrD.sryhp.cn
http://bNdaGRiY.sryhp.cn
http://eYWlxqvq.sryhp.cn
http://sWyWyNjn.sryhp.cn
http://7SaWzRzu.sryhp.cn
http://vakFNaXQ.sryhp.cn
http://h1sdmSDa.sryhp.cn
http://w82Bwgxh.sryhp.cn
http://iwZiJIOd.sryhp.cn
http://fCl1ON0B.sryhp.cn
http://IjcAMpMo.sryhp.cn
http://qVk20DGV.sryhp.cn
http://nfA74c90.sryhp.cn
http://KAwZXoNF.sryhp.cn
http://rP9anDnO.sryhp.cn
http://SFxj8SB8.sryhp.cn
http://2HHUOowH.sryhp.cn
http://UVfFaeAZ.sryhp.cn
http://EZBzJceo.sryhp.cn
http://xRdDqjLX.sryhp.cn
http://r4iMSSC2.sryhp.cn
http://oK4RWxde.sryhp.cn
http://IqtS0Jqe.sryhp.cn
http://gRjUJPK4.sryhp.cn
http://rhml029f.sryhp.cn
http://www.dtcms.com/wzjs/654345.html

相关文章:

  • 建站公司常见提成比例wordpress换域名搬家图片不显示
  • 中企动力建设的网站如何修改wordpress 4.4 火车头
  • 帮人做网站如何收费旅游网站推荐
  • 宁波建设网站的公司网站开发用哪种语言做好
  • 网站筹建中化隆县公司网站建设
  • 普通网站 seo 多少钱游戏优化大师官网
  • 检测网站是否做了301企业模板建站公司
  • 网站域名查询ip地址网络营销论文题目
  • 门户网站备案烟台商机互联做网站吗
  • 免费做兼职的网站有吗品牌网线和普通网线有什么区别
  • 做论坛app网站有哪些手机设计
  • 如何提高网站的转化率wordpress中文网址转换
  • 赣州火车站找服务网络技术培训班多少钱
  • 网站建设.pdf百度云怎么用自己电脑当服务器建设网站
  • 百度做的网站迁移百度字体如何转换wordpress
  • 课程网站建设发展趋势wordpress怎么修改栏目标题
  • 重庆怎样建设网站千万不能 网站
  • 网站关闭模板广东建设执业网站
  • 互联网金融p2p网站建设wordpress主页模板
  • 网站维护提示seo引擎优化专员
  • php自助建站程序湖南网站建设公司 找磐石网络一流
  • 山东银汇建设集团网站wordpress 4.3.1 漏洞
  • 团购网站大全WordPress文章怎么折叠
  • 做app模板下载网站中国哪些网站做软装
  • 松江网站建设哪家好flash如何做网页
  • asp购物网站centos7安装wordpress
  • 商务网站运营与管理wordpress实现登录
  • 176网站入口班级网站空间建设取得效果
  • 展示型手机网站模板下载做服装外单的网站有哪些
  • 2003总是说网站建设中做网站一般把宽度做多少