多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > [LeetCode]198.House Robber

[LeetCode]198.House Robber

來源:程序員人生   發布時間:2015-04-14 08:21:42 閱讀次數:2440次

題目

You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed, the only constraint stopping you from robbing each of them is that adjacent houses have security system connected and it will automatically contact the police if two adjacent houses were broken into on the same night.

Given a list of non-negative integers representing the amount of money of each house, determine the maximum amount of money you can rob tonight without alerting the police.

思路

這道題的本質相當于在1列數組中取出1個或多個不相鄰數,使其和最大。
這是1道動態計劃問題。
我們保護1個1位數組dp,其中dp[i]表示到i位置時不相鄰數能構成的最大和。
狀態轉移方程:

dp[0] = num[0] (當i=0時)
dp[1] = max(num[0], num[1]) (當i=1時)
dp[i] = max(num[i] + dp[i - 2], dp[i - 1])   (當i !=0 and i != 1時)

代碼

/*------------------------------------------------------------------- * 日期:2014-04-08 * 作者:SJF0115 * 題目: 198.House Robber * 來源:https://leetcode.com/problems/house-robber/ * 結果:AC * 來源:LeetCode * 總結: --------------------------------------------------------------------*/ #include <iostream> #include <vector> using namespace std; class Solution { public: int rob(vector<int> &num) { if(num.empty()){ return 0; }//if int size = num.size(); vector<int> dp(size,0); // dp[i]=max(num[i]+dp[i⑵],dp[i⑴]) // dp[i]表示[0,i]取1個或多個不相鄰數值的最大收益 dp[0] = num[0]; dp[1] = max(num[0],num[1]); for(int i = 2;i < size;++i){ dp[i] = max(dp[i-1],dp[i-2]+num[i]); }//for return dp[size-1]; } }; int main() { Solution solution; vector<int> num = {4,3,1,3,2}; cout<<solution.rob(num)<<endl; return 0; }

運行時間

這里寫圖片描述

空間優化

用本身數組代替dp數組。

/*------------------------------------------------------------------- * 日期:2014-04-08 * 作者:SJF0115 * 題目: 198.House Robber * 來源:https://leetcode.com/problems/house-robber/ * 結果:AC * 來源:LeetCode * 總結: --------------------------------------------------------------------*/ #include <iostream> #include <vector> using namespace std; class Solution { public: int rob(vector<int> &num) { if(num.empty()){ return 0; }//if int size = num.size(); num[1] = max(num[0],num[1]); for(int i = 2;i < size;++i){ num[i] = max(num[i-1],num[i-2]+num[i]); }//for return num[size-1]; } }; int main() { Solution solution; vector<int> num = {4,3,1,3,2}; cout<<solution.rob(num)<<endl; return 0; }

運行時間

這里寫圖片描述

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 中文字幕亚洲无线码高清 | 一区二区精品在线观看 | 不卡视频一区二区三区 | 中文成人在线视频 | 欧美大片一级毛片 | 国产亚洲视频在线播放大全 | 欧美一级做一a做片性视频 欧美一级做一级爱a做片性 | 精品国产毛片 | 一级毛片一级毛片一级毛片一级毛片 | 一级毛片a免费播放王色 | 欧美人与zoxxxx视频 | 性欧美精品videofree高清hd | 日韩国产免费一区二区三区 | 欧美xxxx性特级高清 | 中文字幕动漫精品专区 | 麻豆看片 | 免费伊人网 | 久久久久亚洲精品一区二区三区 | 亚洲黄色毛片 | 在线观看麻豆 | 欧美bbwxxxx| 国产精品毛片一区二区三区 | 欧美福利二区 | 在线爽| 日韩欧美亚 | 色综合网站在线 | 国产20岁美女一级毛片 | 性国产videofree极品 | 免费观看欧美一级高清 | 欧美一级日韩 | 国产精品久久久久无毒 | 欧美一级日韩一级亚洲一级 | 中文字幕在线观看免费 | jizzjizzjizz亚洲 | 日韩美女福利视频 | 久久精品一区二区三区资源网 | 久久精品久久精品国产大片 | jizz日本老师jizz在线播放 | 亚洲第一免费 | 亚州毛色毛片免费观看 | 91久久偷偷做嫩草影院免费看 |