十字路口的红绿灯(洛谷P2077题题解,Java语言描述)

题目要求

P2077题目链接

在这里插入图片描述

分析

思路无非是先开过平路,在十字路口红灯停、绿灯行,对总时间做个计数,每次通过取模知道当前时间是红绿灯。
数要先读进来,只能先存一下数组了。

读的数多,用BufferedReader就行,Scanner抗不下来。

AC代码(Java语言描述)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String[] arr = reader.readLine().split(" ");
        int num = Integer.parseInt(arr[0]);
        int[] distance_array = new int[num];
        int[] red_time_array = new int[num];
        int[] green_time_array = new int[num];
        distance_array[0] = Integer.parseInt(arr[1]);
        arr = reader.readLine().split(" ");
        for (int i = 1; i < num; i++) {
            distance_array[i] = Integer.parseInt(arr[i-1]);
        }
        arr = reader.readLine().split(" ");
        for (int i = 0; i < num; i++) {
            red_time_array[i] = Integer.parseInt(arr[i]);
        }
        arr = reader.readLine().split(" ");
        for (int i = 0; i < num; i++) {
            green_time_array[i] = Integer.parseInt(arr[i]);
        }
        reader.close();
        int sum_time = 0, temp_time = 0;
        for (int i = 0; i < num; i++) {
            sum_time += distance_array[i];
             temp_time = sum_time % (green_time_array[i] + red_time_array[i]);
             if (temp_time > green_time_array[i]) {
                 sum_time += (green_time_array[i] + red_time_array[i] - temp_time);
             }
            System.out.println(sum_time);
        }
    }
}
发布了481 篇原创文章 · 获赞 974 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/weixin_43896318/article/details/104232857