#include <iostream>
using namespace std;
#define N 100
int main()
{
int n, ans;
int floor[N] = {0};
while(cin >> n){
if(n == 0) break;
ans = 0;//初始化
for(int i = 0; i < n; ++ i){
cin >> floor[i];
if(i == 0) ans += 6 * floor[i];//第一个数字一定上升
else if(floor[i] - floor[i-1] > 0){ans += 6 * (floor[i] - floor[i-1]);}//上升
else ans += -4 * (floor[i] - floor[i-1]);//下降
}
ans += 5 * n;//每层停留的时间
cout << ans << endl;
}
return 0;
}
实际上,本题需要的只是前后两个楼层数据,用来判断是上升和下降,所以不用数组也可以计算。
#include <iostream>
using namespace std;
int main()
{
int n, ans,tmp;
int floor;
while(cin >> n){
if(n == 0) break;
ans = 0,tmp = 0;//初始化
for(int i = 0; i < n; ++ i){
cin >> floor;
if(i == 0) ans += 6 * floor;
else if(floor - tmp > 0){ans += 6 * (floor - tmp);}
else ans += -4 * (floor - tmp);
tmp = floor;
}
ans += 5 * n;//每层停留的时间
cout << ans << endl;
}
return 0;
}