提供两种做法,第一种不知道为啥不ac。。。
#include<iostream>
using namespace std;
//不清楚为什么报错了
int a[10000],x[10000];
int main(){
int n;
while(cin>>n,n!=0){
for(int i=0;i<n;i++){
cin>>a[i];
if(i==0) x[i]=(6+5)*a[i]-5;
else {
if(a[i-1]<a[i]) x[i]=(6+5)*(a[i]-a[i-1])+x[i-1];
if(a[i-1]>a[i]) x[i]=4*(a[i-1]-a[i])+x[i-1]+5;
if(a[i-1]==a[i]) x[i]=x[i-1]+5;
}
}
for(int i=0;i<n;i++){
if(i==n-1) cout<<x[i]<<endl;
}
}
return 0;
}
第二种做法
#include <iostream>
#include <cmath>
using namespace std;
int main(){
int n,in;
int m[100];
while(cin >> n){ //输入的第一个数为后续有N层楼
int sum = 0,i = 0;
in = n;
if( n == 0 ){ //如果输入为0则结束
break;
}else{
while(in--){
cin >> m[i++]; //将输入的楼层赋值给数组保存
}
sum += 6*m[0]; //起点从零层起步,第二个数字是第一次的楼层
for(int j = 0;j < n-1 ;j++){
if(m[j] > m[j+1]){
sum += abs(m[j] - m[j+1])*4; //下降
}else if(m[j] < m[j+1]){
sum += abs(m[j] - m[j+1])*6; //上升
}
}
sum += n*5; //每层停留时间
}
cout<<sum<<endl;
}
return 0;
}