HDU-1008
#include<iostream> using namespace std; int main() { int n,s[110],a,sum,i; while(cin>>n && n!=0) { sum=0; cin>>a; sum=sum+a*6+5; for(i=1;i<n;i++) { cin>>s[i]; if(s[i]>a) sum=sum+(s[i]-a)*6+5; if(s[i]<=a) sum=sum+(a-s[i])*4+5;//一定要有等于,可能依旧在同一层 a=s[i] } cout<<sum<<endl; } return 0; }
我的解决方法是输入n之后,先输入第一次的电梯层数a,算出所用时间sum(sum在此之前必须清零),在n>1的情况下, 再接着输入下一次的电梯层数,如果下一次的电梯层数大于上一层的,则用其差乘以每向上一层的所需时间及停留时间;如果下一次的电梯层数小于上一层的,则用其差乘以每向下一层的所需时间及停留时间;也有再次在可能 在同一层,则至假设停留时间。不断累积sum得到最终结果。