C++ 贪心算法 跳跃游戏

一个数组存储了非负整型数据,数组中的第i个元素a[i],代表了可以从数组第i个位置最多向前跳跃a[i]步;已知数组各元素的情况下,求是否可以从数组的第0个位置跳跃到数组的最后一个元素的位置?

#include<vector>
class Solution
{
public:
 Solution(){}
 ~Solution(){}
 bool CanJump(std::vector<int>& nums)
 {
  std::vector<int> index;
  for (unsigned int i = 0; i < nums.size(); i++)
  {
   index.push_back(i + nums[i]);
  }
  unsigned int jump = 0;
  int max_index = index[0];
  while (jump <index.size() && jump<=max_index)
  {
   if (max_index<index[jump])
   {
    max_index = index[jump];     //如果当前可以跳得更远,则更新max_index
   }
   jump++;
  }
  if (jump==index.size())
  {
   return true;
  }
  return false;
 }
};
int main()
{
 std::vector<int> nums;
 nums.push_back(2);
 nums.push_back(3);
 nums.push_back(1);
 nums.push_back(1);
 nums.push_back(4);
 Solution solve;
 printf("%d\n", solve.CanJump(nums));
 return 0;
}

运行结果:
1

发布了61 篇原创文章 · 获赞 47 · 访问量 1605

猜你喜欢

转载自blog.csdn.net/weixin_44208324/article/details/104567152