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

在线app开发谷歌seo和百度seo的区别

在线app开发,谷歌seo和百度seo的区别,南沙做网站公司,上海环球金融中心高度198. 打家劫舍 思路: 动规五部曲: 1.dp数组及其下标的意义:dp数组表示当前房屋下偷与不偷的最大盗取金额 2.确定递推公式:因为盗取房屋只能间隔盗取,并且还要取最大值。所以每个房屋都有盗取和不盗取两个选择&…

198. 打家劫舍

思路:

动规五部曲:

1.dp数组及其下标的意义:dp数组表示当前房屋下偷与不偷的最大盗取金额

2.确定递推公式:因为盗取房屋只能间隔盗取,并且还要取最大值。所以每个房屋都有盗取和不盗取两个选择,盗不盗取取决于金额,所以递推公式为dp[ i ] = max(dp[ i-1] (不盗取),dp[i-2 ]+nums[ i ](盗取))

3.dp数组的初始化:因为递推公式要取最大盗取金额,同时金额都为非负数,所以初始化为最小值0

4.遍历顺序:从前往后

代码:

class Solution {
public:int rob(vector<int>& nums) {vector<int> dp(nums.size(),0);if(nums.size() == 0)return 0;if(nums.size()==1)return nums[0];//一定不要忘了无法用递推公式的情况//dp数组的初始化dp[0] = nums[0];dp[1] = max(nums[0],nums[1]);for(int i =2;i <nums.size();i++){dp[i] = max(dp[i-1],dp[i-2]+nums[i]);}return dp[nums.size()-1];}
};

遇到的问题:

对于一开始如果nums的个数小于三,那么就无法应用递推公式,需要手动判断

213. 打家劫舍 II

思路:

此题与上一题不同的是,这次的家是环形的,而非线性。因为相邻就不偷,所以第一个和最后一个只有一个可以偷,所以分两种情况

1.dp数组及其下标的意义:

dp数组表示当前序号房屋下偷与不偷的最大盗取金额

2.确定递推公式:

dp[ i ] = max(dp[ i-1] (不盗取),dp[i-2 ]+nums[ i ](盗取))

3.dp数组的初始化:因为递推公式要取最大盗取金额,同时金额都为非负数,所以初始化为最小值0

4.遍历顺序:从前往后

代码:

class Solution {
public:int rob(vector<int>& nums) {if(nums.size() == 0)return 0;if(nums.size()==1)return nums[0];int result1 = caozuo(nums,1,nums.size()-1);int result2 = caozuo(nums,0,nums.size()-2);return max(result1,result2);}int caozuo(vector<int>& nums ,int start,int end){if(start == end)return nums[start];vector<int> dp(nums.size(),0);//此处相当于复制了一个dp数组,因为start和end是原来的dp数组截取的下标,所以长度不能动dp[start] = nums[start];dp[start+1] = max(nums[start],nums[start+1]);for(int i = start+2;i<=end;i++){dp[i] = max(dp[i-1],dp[i-2]+nums[i]);}return dp[end];//此处因为最后的值为end}
};

遇到的问题:

对于在分情况讨论只有头房子和尾房子时,处理dp数组的方式与不分情况是一样的

337. 打家劫舍 III

思路:

1.dp数组的意义:dp数组下标为0记录不偷该节点所得到的的最大金钱,下标为1记录偷该节点所得到的的最大金钱。

2.中止条件:cur ==NULL遇到叶子节点

3.遍历顺序:因为是二叉树,所以遍历顺序从前中后遍历中选择,选择后序遍历,因为当前节点偷不偷取决于子节点

代码:

class Solution{
public:int rob(TreeNode* root) {//dp数组采用一个动态数组,内部只有两个元素,0和1,vector<int> result = caozuo(root);return max(result[0],result[1]);}vector<int> caozuo(TreeNode* cur){if(cur == NULL)return {0,0};//后序遍历//左vector<int>left = caozuo(cur->left);//右vector<int>right = caozuo(cur->right);//中//偷父节点int val1 = cur->val + left[0]+right[0];//不偷父节点int val2 = max(left[0],left[1]) + max(right[0] ,right[1]);return {val2,val1};//{ }是列表的初始化来赋值数组}
};

遇到的问题:

1. return {val2,val1};//{ }是列表的初始化来赋值数组

2.为什么选择从下往上偷,第一可以使用递归函数的返回值,第二符合动态规划的思路(重叠子问题,最优子结构)

http://www.dtcms.com/wzjs/587488.html

相关文章:

  • 北京响应式网站建设费用中国工商银行网站建设
  • 网站开发实现编码wordpress菠菜插件
  • .net网站模板商城网站互动性
  • 手机网站建设步骤包装设计怎么做
  • 网站前端后端分开做可以吗网站雪花飘落代码
  • 做历史卷子的网站wordpress适应手机
  • 上虞区驿亭镇新农村建设网站手机界面设计说明
  • 盐城网站设计公司零基础是学不了ui的
  • 网站关键词seo优化怎么做微网站建设完不知道怎么推广咋办
  • 阅读小说网站建设2016网站谷歌权重
  • cms网站开发网站底部链接代码
  • wordpress建设下载网站网站建设的基本特点
  • 枣阳市建设局网站wordpress图片弹出
  • 合肥建设监理协会网站网络规划设计方案模板
  • 合江做网站营销系统软件
  • 网站建设优化汕头网站技术
  • phpcmsv9网站地图做游戏网站的需求分析
  • wordpress单页面网站怎么做安徽商会网站建设方案
  • seo的培训网站哪里好三秒自动跳转页面
  • 专门做外链的网站借用备案网站跳转做淘宝客
  • 外贸网站建设策划学做美食视频网站
  • 上海网站建设改版网页游戏平台十大排名
  • 北京高端网站制作公司广告字体设计在线生成
  • ftp网站后台wordpress首页是哪个文件
  • 如何构成网站坂田英文网站制作
  • 深圳网站制作推广闵行集团网站建设
  • 顺德微信网站建设重庆平台网站建设费用
  • 汕头模板做网站专业建站推广网络公司
  • 鞍山网站建设制作网站前后端分离怎么做
  • 网站建设题目网站关键词突然搜不到了