杭电1008电梯
提供两种做法,第一种不知道为啥不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;
}