题解 | #跳跃游戏(二)#
跳跃游戏(二)
https://www.nowcoder.com/practice/58e31b785f4b4ced9695dd4fcd60c1ce
#include <iostream> #include <vector> using namespace std; int main() { int n; while (cin >> n) { vector<int> a(n); for (int i = 0; i < n; ++i) { cin >> a[i]; } int ans = a[n - 1]; // 积分 int ans_i = n - 1; // 取得积分的位置 // 从倒第二位置 往前遍历, for (int i = n - 2; i >= 0; --i) { if(i + a[i] >= ans_i) { ans += a[i]; ans_i = i; } } cout << (ans_i == 0 ? ans : -1) << endl; } } // 64 位输出请用 printf("%lld")