电梯
java题目描述
在我们的城市最高的建筑只有一个电梯。电梯请求列表包括N个正数。该数字序列表示电梯将要到达的楼层顺序。电梯每上一层楼用时6秒,下一层楼用时4秒,停一次用时5秒。
对于给定的请求列表,请计算花费执行列表中的请求的总时间。电梯初始在第0层。
输入格式
输入数据有多组。每组输入数据包含一个正整数N和N个正整数(N和楼层值不会超过100),表示电梯要到达的楼层数量和楼层。当N=0时输入结束,此组数据不进行处理。
输出格式
对于每组输入数据,计算电梯完成请求列表需要的时间,每组输出占一行。
样例输入
1 2
3 2 3 1
0
样例输出
17
41
public static void main(String[] args) {
elevator();
}
public static void elevator(){
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
if(n < 0){
System.out.println("请输入大于等于0的数字");
}
if(n == 0){
System.out.println("此组数据不做处理");
}
System.out.println("请输入层数:");
int[] m = new int[n];
for(int i=0; i<n; i++){
m[i] = scanner.nextInt();
}
int sum = 0;
sum += 6 * m[0];
for(int j = 0;j < n-1 ;j++){
if(m[j] > m[j+1]){
sum += Math.abs(m[j] - m[j+1])*4; //下降
}else if(m[j] < m[j+1]){
sum += Math.abs(m[j] - m[j+1])*6; //上升
}
}
sum += n * 5;
System.out.println(sum);
}
这不就模拟加一下不就好了。也可以分开算上用总时间,下用总时间,停的总时间,求个和。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNext()){
int time = 0;
int num = in.nextInt();
if(num ==0){
break;
}
int cur = 0;
int next;
int acount = 0;
int dcount = 0;
for(int i = 1;i<=num;i++){
next = in.nextInt();
if(next>cur)
acount+=(next-cur);
else
dcount += (cur-next);
cur = next;
}
time = acount6+dcount4+5;
System.out.println(time);
}
}
}