PAT_A_1008

题目概述

一幢高楼只有一个电梯,给出一个有N个正整数的需求目录,电梯一次停在目录上给出数字所对应的楼层。电梯上升一层需要6秒,下降一层需要4秒,每一次停下会在该层停留5秒。
根据此需求目录,求出电梯完成此目录的总时间。电梯的初始位置为第0层,并且在完成目录后,电梯不必回到底层。

Input Specification:

每次输入一个案例,每个案例包括一个正整数N,以及N个整数,并且所有输入的数字不可以超过100.

Output Specification:

每个案例输出总时间,占一行。

Sample Input:

3 2 3 1

Sample Output:

41

分析

这道题其实很简单,可能唯一需要注意的地方就是判断电梯是上升还是下降,然后根据对应的移动方式计算时间。考虑到要比较判断电梯相对前一个运动之后,对应下一步是上升还是下降,或者是等待的情况,我设置了两个变量s、n。具体运行方式,我觉得代码已经很清晰的展现了,就不赘述了:)

代码

#include<iostream>
using namespace std;
int s;
int elevator(int n){
	if(n==s) return 5;
	else if(n>s) {
		return (n-s)*6+5;
	}
	else{
		return (s-n)*4+5;		
	}
}
int main(){
	int t,n,time;
	while(1){
		s=0;
		time=0;
		cin>>t;
		if(t==0) break;
		while(t){
			cin>>n;
			time+=elevator(n);
			t--;
			s=n;
		}
		cout<<time<<endl;
	}
}

结果

在这里插入图片描述
【注】有时候在函数功能部分,如果设置if - else if - else不当,程序的运行结果可能会出错(尤其在递归函数中)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值