| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 算法系列——动态规划6 -> 正文阅读 |
|
[数据结构与算法]算法系列——动态规划6 |
搞定打家劫舍 class?Solution?{ public: /* ????dp[i]:??考虑i个以内的房屋被偷窃的最大金额 ????如果偷i号房间,那么金额就是nums[i]+dp[i-2] ????如果不偷i号房间,就可能偷i-1号房间,只是可能偷,那么金额是dp[i-1] ????nums?????1???2???3???1 ????idnex????0???1???2???3 ????dp???????1???2???4???3 ????dp[i]=max(dp[i],nums[i]+dp[i-2]) ???? */ ????int?rob(vector<int>&?nums)?{ ????????int?m=nums.size(); ????????if(m==0)?return?0; ????????if(m==1)?return?nums[0]; ????????vector<int>dp(m); ????????dp[0]=nums[0]; ????????dp[1]=max(nums[0],nums[1]); ????????for(int?i=2;i<=m-1;i++){ ????????????dp[i]=max(dp[i-1],nums[i]+dp[i-2]); ????????} ????????return?dp[m-1]; ????} }; class?Solution?{ public: /* ????dp[i]:i个房间内窃取的最大金额 ????和上一题一样,取决第i个房间偷不偷,不同的地方是首尾房间相邻成环了,就首尾肯定不能一起偷,所以分两种情况: ????掐头和去尾,在这之两者中比较哪种情况窃取的金额会多些 ????理解了上面的话,基本就和前一题差不多了,只不过要分两种情况计算 ????偷第i个房间:nums[i]+dp[i-2] ????不偷第i个房间,可能偷第i-1个,dp[i-1] ????nums???1???2???3???????????nums????2???3???1 ????index??0???1???2???????????index???1???2???3 ????dp?????1???2???4???????????dp??????2???3???3 ????dp=max(dp[i-1],nums[i]+dp[i-2]) */ ????int?help(vector<int>&nums,int?start,int?end){ ????????if(start==end)?return?nums[start]; ????????int?m=nums.size(); ????????vector<int>dp(m); ????????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-2]+nums[i],dp[i-1]); ????????}? ????????return?dp[end]; ????} ????int?rob(vector<int>&?nums)?{ ????????int?m=nums.size(); ????????if(m==0)?return?0; ????????if(m==1)?return?nums[0]; ????????int?res1=help(nums,0,m-2); ????????int?res2=help(nums,1,m-1); ??????? ????????return?max(res1,res2); ????} }; |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 3:29:04- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |