题解 | #跳跃游戏(二)#
跳跃游戏(二)
http://www.nowcoder.com/practice/58e31b785f4b4ced9695dd4fcd60c1ce
#include <iostream>
#include <vector>
using namespace std;
class solution
{
public:
void getResult(vector<int> &nums)
{
int n = nums.size();
vector<int> dp(n, -1);
dp[0] = nums[0];
for (int i = 1; i < n; i++)
{
for (int j = i - 1; j >= 0; j--)
{
if (dp[j] && nums[j] >= (i - j))
{
dp[i] = dp[j] + nums[i];
break;
}
}
if (dp[i] == -1)
{
break;
}
}
cout << dp[n - 1] << endl;
}
};
int main()
{
int n;
cin >> n;
cin.get();
vector<int> nums(n);
for (int i = 0; i < n; i++)
{
cin >> nums[i];
}
cin.get();
solution mSolution;
mSolution.getResult(nums);
return 0;
}