输入 第一行输入两个整数,分别为小明和小强可以等对方的分钟数; 第二行输入两个时间,分别为小明和小强到达约会地点的时 输出 如果能约会成功,输出“YES”,否则输出“NO”。 样例输入 Copy 30 5 18:50 19:10 样例输出 Copy YES
时间: 2024-10-23 13:18:59 浏览: 49
这个问题描述的是一个简单的判断两个人能否按时相遇的问题。给定的时间差(两人等待对方的最长时间)以及每个人的到达时间,我们需要计算他们是否能在等待时间内相遇。
首先,你需要把输入的字符串时间转换为表示小时和分钟的数值形式。假设小明到达时间为`hh:mm`格式,我们可以将其拆分为小时(h)和分钟(m),例如`18:50`变为`18`小时`50`分钟。
然后,计算每个人到达的时间加上等待时间,看看这个新的时间是否大于或等于另一人的到达时间。如果是,则说明他们可以在约定时间内相遇;如果不是,他们就不能成功约会。
以下是一个简单的C语言程序,实现了上述逻辑:
```c
#include <stdio.h>
// 函数用来比较两个时间点是否可以成功约会
int canMeet(int minWait, char *time1, char *time2) {
// 将时间字符串转换为小时和分钟
int h1 = (time1[0] - '0') * 10 + time1[1] - '0';
int m1 = (time1[3] - '0') * 10 + time1[4] - '0';
int h2 = (time2[0] - '0') * 10 + time2[1] - '0';
int m2 = (time2[3] - '0') * 10 + time2[4] - '0';
// 计算两人的总时间
int totalTime1 = h1 * 60 + m1;
int totalTime2 = h2 * 60 + m2;
// 如果两人加上等待时间后仍有交叉时间,返回1(YES),否则返回0(NO)
return (totalTime1 + minWait >= totalTime2) || (totalTime2 + minWait >= totalTime1);
}
int main() {
int minWait, h1, m1, h2, m2;
scanf("%d %d", &minWait, &h1, &m1); // 输入等待时间和小明时间
scanf("%d:%d", &h2, &m2); // 输入小强时间
if (canMeet(minWait, (char*)(&h1), (char*)(&m1) << ":") << h2)) {
printf("YES\n");
} else {
printf("NO\n");
}
return 0;
}
```
阅读全文