#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <sstream>
#include <iomanip>
#include <queue>
using namespace std;
class Solution
{
public:
int rob(vector<int> &nums)
{
if (nums.size()==0)
{
return 0;
}
if (nums.size()==1)
{
/* code */
return nums[0];
}
if (nums.size()==2)
{
/* code */
return max(nums[0],nums[1]);
}
if (nums.size()==3)
{
/* code */
return max(max(nums[0],nums[1]),nums[2]);
}
return max(qiuDp(0,nums.size()-1,nums),qiuDp(1,nums.size(),nums));
}
int qiuDp(int begin,int end,vector<int>& nums){
vector<int> dp(nums.size()-1,0);
dp[0]=nums[begin];
dp[1]=max(nums[begin],nums[begin+1]);
for (int i = 2; i < nums.size()-1; i++)
{
dp[i]=max(dp[i-1],dp[i-2]+nums[i+begin]);
}
return dp[nums.size()-2];
}
};
int main()
{
Solution s;
cout << s.climbStairs(9);
cout << endl;
system("pause");
return 0;
}
打家劫舍ii 房子连成一个圈
最新推荐文章于 2024-11-12 12:29:51 发布
本文介绍了一个名为Solution的C++类,用于解决爬楼梯问题的动态规划方法。通过`qiuDp`函数,计算从开始到末尾的最大步数,以求解给定整数数组中爬楼梯的最大步数。在`main`函数中展示了如何使用这个类解决9级楼梯问题。
摘要由CSDN通过智能技术生成