杭电OJ 1008题 题目链接:
本题思路:分步模拟,使用队列保存需要停的楼层。
import java.io.BufferedInputStream;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class Main {
//计算每一步骤所需的时间
private static int time(int begin, int end){
int time = 0;
if(end > begin){
time += (end-begin)*6+5;
} else {
time += (begin - end)*4 + 5;
}
return time;
}
public static void main(String[] args) {
Scanner cin = new Scanner(new BufferedInputStream(System.in));
int count = cin.nextInt();
//使用队列保存需要停的各个楼层
Queue<Integer> floorQueue = new LinkedList<Integer>();
while(count != 0){
int total = 0;
for(int i=0; i<count; i++){
floorQueue.add(cin.nextInt());
}
int begin = 0;
int end = 0;
for(int i=0; i<count; i++){
end = floorQueue.remove();
total += time(begin, end);
begin = end;
}
floorQueue.clear();
System.out.println(total);
count = cin.nextInt();
}
cin.close();
}
}
欢迎评论讨论指正,不喜勿喷。