1.题目描述:
小×正在进行一项健身计划,该计划包括爬楼梯。小×会根据一系列计划来爬不同的楼层,每次的计划可能是向上爬到更高的楼层(用正数表示),也可能是向下爬到更低的楼层(用负数表示)。
现在,请你编写一个程序,帮助小×确定在每个计划开始时,他至少需要站在哪一层楼上开始爬,以确保他能按照计划完成所有的任务。需要注意的是,楼层高度没有限制,但最低楼层是1层。
2.输入格式:
首先输入一个整数 n,表示总共有 n 个计划。
接着输入 n 个整数,表示小×的每一次爬楼梯的高度。其中,正数表示向上爬的楼层数,负数表示向下爬的楼层数。
3.输出格式:
输出 n 个整数,第i个整数表示从第i个计划开始做到结束,小×至少需要站在哪一层楼上开始爬。
#include <iostream>
using namespace std;
const int N = 1010;
int plans[N]; //每个健身计划
int m[N]; //从第i个计划开始的最小层数
int n;
int main() {
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> plans[i];
}
m[n + 1] = 1;
for (int i = n; i > 0; i--) {
if (plans[i] < 0) {
m[i] = m[i + 1] - plans[i];
} else {
if (m[i + 1] > plans[i]) {
m[i] = m[i + 1] - plans[i];
} else {
m[i] = 1;
}
}
}
for (int i = 1; i <= n; i++) {
cout << m[i] << " ";
}
}