最晚起床问题

牛牛总是睡过头,所以他定了很多闹钟,只有在闹钟响的时候他才会醒过来并且决定起不起床。从他起床算起他需要X分钟到达教室,上课时间为当天的A时B分,请问他最晚可以什么时间起床。
每个输入包含一个测试用例。
每个测试用例的第一行包含一个正整数,表示闹钟的数量N(N<=100)。
接下来的N行每行包含两个整数,表示这个闹钟响起的时间为Hi(0<=A<24)时Mi(0<=B<60)分。
接下来的一行包含一个整数,表示从起床算起他需要X(0<=X<=100)分钟到达教室。
接下来的一行包含两个整数,表示上课时间为A(0<=A<24)时B(0<=B<60)分。
数据保证至少有一个闹钟可以让牛牛及时到达教室。
输出两个整数表示牛牛最晚起床时间。
输入:
3
5 0
6 0
7 0
59
6 59 输出:6 0
这道题其实就是个加减法问题,只要起床的时间+路上花费的时间小于上课的时间就行,解题思想
1.把起床时间全部转化为分钟放入数组中,即hour*60+minn;
2.判断当前时间起床会不会迟到,即只要最晚时间=上课时间-路途时间+起床时间>0即可。
3.假设第一个闹钟时间是最晚起床时间,遍历数组,判断当前闹钟时间是否会迟到,如若不迟到,比较差值和第一个闹钟时间与上课是按的差值,如若小于,则将当前闹钟时间变为最晚起床时间,直到数组完毕。
辞职min就是最晚起床时间闹钟的下标。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N= sc.nextInt();
        int hour = 0;
        int minn = 0;
        int [] a = new int[N];
        for (int i =0;i

你可能感兴趣的:(最晚起床问题)