【问题描述】小明同学要坐火车去旅游,他对要挑选一辆最快的列车,请编程解决小明的问题
【输入形式】第一行输入n ,表示有n趟可供选择的列车。以后n行输入火车信息。火车信息包括车次 始发时间(时 分) 到达时间(时 分)价钱
【输出形式】最快的列车的信息
【样例输入】
6
D31 9 6 15 12 226
D35 0 27 6 53 261
K55 7 45 21 31 141
D43 14 38 21 14 261
G385 17 16 22 7 400
D39 16 0 22 33 261
【样例输出】
G385 17 16 22 7 400
转成秒数计算,得到最小值
代码如下:
#include <stdio.h>
typedef struct _time
{
int h, m;
}Times;
typedef struct _data
{
char id[10];
Times start, end;
int m;
}Car;
int main()
{
int i, n;
Car c, cmin;
int t1, t2, min,tmp;
scanf("%d", &n);
for (i = 0; i < n; i++)
{
scanf("%s %d %d %d %d %d", c.id, &c.start.h, &c.start.m, &c.end.h, &c.end.m, &c.m);
t1 = c.start.h * 3600 + c.start.m * 60;
t2 = c.end.h * 3600 + c.end.m * 60 ;
tmp = t2 - t1;
if (i == 0)
{
cmin = c;
min = tmp;
}
else if (tmp < min)
{
cmin = c;
min = tmp;
}
}
printf("%s %d %d %d %d %d", cmin.id, cmin.start.h, cmin.start.m, cmin.end.h, cmin.end.m, cmin.m);
return 0;
}
最快的车,那就是到达时间减去始发时间求最小值
#include <stdio.h>
typedef struct _times
{
int hour;
int mins;
}times;
typedef struct _train
{
char no[20];
times stime;
times etime;
int pay;
}train;
int main()
{
train trains[100];
int n,min,minidx;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%s %d %d %d %d %d",trains[i].no,&trains[i].stime.hour,&trains[i].stime.mins,&trains[i].etime.hour,&trains[i].etime.mins,&trains[i].pay);
int smins = trains[i].stime.hour * 60 + trains[i].stime.mins;
int emins = trains[i].etime.hour * 60 + trains[i].etime.mins;
if(emins < smins)
emins += 24*60;
if(i==0 || emins - smins < min)
{
min = emins - smins;
minidx = i;
}
}
printf("%s %d %d %d %d %d",trains[minidx].no,trains[minidx].stime.hour,trains[minidx].stime.mins,trains[minidx].etime.hour,trains[minidx].etime.mins,trains[minidx].pay);
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!