问题描述
小R设计了一款有趣的机器人,它每次移动时至少需要消耗一个能量值。假设当小R为机器人提供了 5 个能量值,它可以选择不动,也可以走 1 步,但它不会走超过 5 步。
小R希望机器人能够走到一个终点,该终点位于 N 个位置的最后一个位置。每个位置上都有一定的能量值,机器人每次消耗当前位置的能量值可以往前走几步,之后可以继续消耗新的位置的能量继续前进。如果某个位置的能量值为 0,机器人将无法再继续行动。
小R想知道,机器人是否有可能通过这些能量值移动到最后一个位置。你能帮他计算一下吗?
测试样例
样例1:
输入:
n = 5 ,array = [2, 3, 1, 1, 4]
输出:'TRUE'
样例2:
输入:
n = 5 ,array = [3, 2, 1, 0, 4]
输出:'FALSE'
样例3:
输入:
n = 6 ,array = [1, 2, 3, 4, 0, 0]
输出:'TRUE'
#include <algorithm>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
std::string solution(int n, std::vector<int> array) {
int max_reach = 0;
for (int i = 0; i < n; ++i) {
if (i > max_reach) {
return "FALSE";
}
max_reach = max(max_reach, i + array[i]);
if (max_reach >= n - 1) {
return "TRUE";
}
}
return "FALSE";
}
int main() {
// Add your test cases here
std::cout << (solution(5, {2, 3, 1, 1, 4}) == "TRUE") << std::endl;
std::cout << (solution(5, {3, 2, 1, 0, 4}) == "FALSE") << std::endl;
return 0;
}