198、打家劫舍
动态规划问题
问题划分为n个小问题
若偷第n家,则偷的最大金额为前n-2家的最大金额加上第n家的金额
若不偷第n家,则偷的最大金额为前n-1家的最大金额
即dp[i] = max(dp[i-2]+num[i], dp[i-1])
其中dp[0]表示只有一间房屋,则dp[0] = num[0]
dp[1]表示只有两间房屋,dp[1]=max(num[0], num[1])
//打家劫舍 #include<iostream> #include<string> #include<vector> using namespace std; /* 问题划分为n个小问题 若偷第n家,则偷的最大金额为前n-2家的最大金额加上第n家的金额 若不偷第n家,则偷的最大金额为前n-1家的最大金额 即dp[i] = max(dp[i-2]+num[i], dp[i-1]) 其中dp[0]表示只有一间房屋,则dp[0] = num[0] dp[1]表示只有两间房屋,dp[1]=max(num[0], num[1]) */ int rob(vector<int>& nums) { int n = nums.size(); int dp[100] = {0}; if(n==1) return nums[0]; else if (n==2) { return max(nums[0], nums[1]); } dp[0] = nums[0]; dp[1] = max(nums[0], nums[1]); for(int i = 2; i<n; i++){ dp[i] = max(dp[i-1], dp[i-2] + nums[i]); } return dp[n-1]; } int main() { int num[5] = {2,7,9,3,1}; vector<int> nums(num, num+5); int result = rob(nums); cout<<result<<endl; return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2023-01-11 43、商品服务---品牌管理---级联更新
2022-01-11 03-docker中的名词概念
2022-01-11 02-docker的历史
2022-01-11 01-docker为什么出现
2022-01-11 02-ES简介
2022-01-11 01-全文检索