日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

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

[LeetCode]198.House Robber

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

題目

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; }

運行時間

這里寫圖片描述

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 天天久久综合 | 成人在线综合网 | 91福利国产在线观看菠萝蜜 | 欧美成人一区二区三区片免费 | 欧美成人一区二免费视频软件 | 一本久久精品一区二区 | 亚洲精品一区久久久久久 | 欧美成人免费 | 久久免费精品 | 国产精品污www在线观看 | 青青国产精品 | а√ 天堂 在线官网 | 成人一区二区三区四区 | 欧美一区日韩一区 | 国产v日产∨综合v精品视频 | 精品99在线| 国产自产 | 青青草网址 | 久热精品在线 | 看片日韩 | 一区二区三区色 | 欧美黄色免费大片 | 九九99久久 | 中文字幕亚洲电影 | 国产日本在线 | 国产日韩精品视频一区二区三区 | 午夜av免费在线观看 | 色婷婷亚洲 | 国产黄色在线网站 | 99精品国产高清一区二区麻豆 | 三级视频网站在线观看 | 韩日电影| 国产成人精品免费视频大全最热 | 国产精品不卡一区 | 久久av影院| 日本午夜视频 | 日日操夜夜操狠狠操 | 亚洲欧美另类久久久精品2019 | 亚洲午夜精品 | 黄色毛片视频免费 | 国产在线视频一区二区三区 |