牛客网编程题 牛牛的闹钟

https://www.nowcoder.com/practice/9173e83d1774462f81255a26feafd7c6?tpId=98&tqId=32830&tPage=1&rp=1&ru=%2Fta%2F2019test&qru=%2Fta%2F2019test%2Fquestion-ranking

题解:

找出与目标时间相差最下的时间即可(不能为负数)

代码如下:

#include<stdio.h>
#include<iostream>
#include<vector>
#include<math.h>
#define INF 0x3f3f3f3f
using namespace std;

struct timer{
    int h,m;
    timer(int hh,int mm){
        h=hh;
        m=mm;
    }
};

vector<timer> vec;

int main(){
    int n,h,m,r,lh,lm,minl=INF;
    timer res(0,0);
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        scanf("%d%d",&h,&m);
        timer t(h,m);
        vec.push_back(t);
    }

    scanf("%d",&r);
    scanf("%d%d",&lh,&lm);
    for(int i=0;i<n;i++){
        int tmp=(lh*60+lm)-(vec[i].h*60+vec[i].m+r);
        if(tmp<minl&&tmp>=0){
            minl=tmp;
            res=vec[i];
        }
    }
    printf("%d %d",res.h,res.m);
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/zzh1582188532/p/12156664.html