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

聊城网站建设信息后台登陆wordpress

聊城网站建设信息,后台登陆wordpress,服装公司电子商务网站建设策划书,怎么做有声小说网站播音员代码随想录算法训练营第五十天 198.打家劫舍 题目链接:198.打家劫舍 确定dp数组以及下标的含义:dp[i]:考虑下标i(包括i)以内的房屋,最多可以偷窃的金额为dp[i]。确定递推公式:max(dp[i - 1],…

代码随想录算法训练营第五十天

198.打家劫舍

题目链接:198.打家劫舍

  1. 确定dp数组以及下标的含义:dp[i]:考虑下标i(包括i)以内的房屋,最多可以偷窃的金额为dp[i]。
  2. 确定递推公式:max(dp[i - 1], dp[i - 2] + nums[i]);,不偷当前节点和偷当前节点哪个获利最大就取哪个
  3. dp数组如何初始化:dp[0]=nums[0],只有一个必须偷。dp[1]=max(nums[0],nums[1])一共2个元素,只能偷一个最大的
  4. 确定遍历顺序:从前向后遍历。
  5. 打印dp数组。
class Solution {
public:int rob(vector<int>& nums) {if (nums.size() == 1)return nums[0];vector<int> dp(nums.size(), 0);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];}
};

213.打家劫舍II

题目链接:213.打家劫舍II
偷第一家就不能偷最后一家,偷最后一家就不能偷第一家,分别将两种状态求出,再从二者之间找最大值。两种情况分别可以用上题方法求解。

class Solution {
public:int Rob(vector<int>& nums,int start, int end){if(start==end)return nums[start];vector<int> dp(nums.size(), 0);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];}int rob(vector<int>& nums) {if(nums.size()==1)return nums[0];int first = Rob(nums,0,nums.size()-2);int last = Rob(nums, 1, nums.size()-1);return max(first,last);}
};

337.打家劫舍III

题目链接:337.打家劫舍III
dp数组表示,每个节点偷当前节点和不偷当前节点可以取得的最大价值。要求当前节点值需要知道左右节点的值,所以是后序遍历。最后再偷根节点和不偷根节点之间取一个最大值即可。

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:vector<int> Rob(TreeNode* cur){if(cur==nullptr)return {0,0};vector<int> left = Rob(cur->left);vector<int> right = Rob(cur->right);vector<int>dp(2);//定义一个dp数组dp[0]表示当前节点不偷可以获得的最大金币,dp[1]表示偷当前节点可以获得的最大金币dp[0] = max(left[0],left[1])+max(right[0],right[1]);//不偷当前节点,那它的子节点可以选择偷或者不偷,左子偷不偷选最大的+右子偷不偷选最大的dp[1] = left[0]+right[0]+cur->val;//偷当前节点,左右子都不能偷,所以等于左不偷+右不偷+当前节点的值return dp;}int rob(TreeNode* root) {return max(Rob(root)[0],Rob(root)[1]);}
};

http://www.yayakq.cn/news/965267/

相关文章:

  • 广东省住房城乡建设厅网站直播系统开发
  • 如何提高网站加载速度慢linux编辑wordpress
  • wordpress仿p站主题数据百度做网站好用吗
  • 在电脑上做网站的软件如何细分行业 做网站赚钱
  • 网站到期怎么续费怎么在微信上卖东西
  • html5 爱情网站模板网站建设设计制
  • seo建站淘客电子商务公司
  • 网站视频嵌入代码网站优化推广 视屏
  • 企业自助建站企业网站维护建设ppt
  • 免费网站怎么建立上海网页设计公司选择兴田德润
  • 淮南建设公司网站软装设计公司名字
  • 个人网站备案类型哪个软件可以自动排名
  • 做彩票网站的方案宣传片拍摄手法有哪些
  • 网站建设公司的年报网站建设 中企动力
  • 买保险网站高端商品网站
  • 专业网站快速排名优势黑龙江建设监理协会网站
  • 做网站被用作非法用途河北农业建设信息网站
  • 郑州免费网站建设wordpress 插件 表
  • 网站页面布局大数据精准营销案例
  • 企业网站建设与网页制作杭州建设工程招投标
  • iis7配置asp网站宜宾做网站的公司
  • 专门做折扣的网站怎样开发自己的app
  • 广西南宁建设厅网站wordpress 会话过期
  • 做海外市场什么网站推广自己怎么做商城网站
  • 网站支持ipv6做哪些改造济南中建设计院 官方网站
  • 网站怎么做参考文献找建筑图纸的网站
  • 印章在线制作网站直播吧在线直播
  • 云南建设局网站首页电商需要多少投入
  • 深圳品牌设计网站如何修改网站后台登陆入口路劲
  • 一个网站数据库华为网站的建设目标