企业做网站怎么做,网页设计师简介,域名是指什么,如何去建设一个企业网站文章目录 L2-042 老板的作息表题目描述sort排序函数 L2-042 老板的作息表
题目描述 新浪微博上有人发了某老板的作息时间表#xff0c;表示其每天 4:30 就起床了。但立刻有眼尖的网友问#xff1a;这时间表不完整啊#xff0c;早上九点到下午一点干啥了#xff1f;
本题就… 文章目录 L2-042 老板的作息表题目描述sort排序函数 L2-042 老板的作息表
题目描述 新浪微博上有人发了某老板的作息时间表表示其每天 4:30 就起床了。但立刻有眼尖的网友问这时间表不完整啊早上九点到下午一点干啥了
本题就请你编写程序检查任意一张时间表找出其中没写出来的时间段。
输入格式 输入第一行给出一个正整数 N为作息表上列出的时间段的个数。随后 N 行每行给出一个时间段格式为
hh:mm:ss - hh:mm:ss
其中 hh、mm、ss 分别是两位数表示的小时、分钟、秒。第一个时间是开始时间第二个是结束时间。题目保证所有时间都在一天之内即从 00:00:00 到 23:59:59每个区间间隔至少 1 秒并且任意两个给出的时间区间最多只在一个端点有重合没有区间重叠的情况。
输出格式 按照时间顺序列出时间表中没有出现的区间每个区间占一行格式与输入相同。题目保证至少存在一个区间需要输出。
输入样例
8
13:00:00 - 18:00:00
00:00:00 - 01:00:05
08:00:00 - 09:00:00
07:10:59 - 08:00:00
01:00:05 - 04:30:00
06:30:00 - 07:10:58
05:30:00 - 06:30:00
18:00:00 - 19:00:00输出样例
04:30:00 - 05:30:00
07:10:58 - 07:10:59
09:00:00 - 13:00:00
19:00:00 - 23:59:59sort排序函数
下面是对提供的代码进行详细注释的版本。这段代码的目的是给定一个时间段的列表它会找出并打印出在这些时间段之间未覆盖的所有时间段。
#includebits/stdc.h // 引入常用的头文件
using namespace std;// 定义一个结构体tim来存储每一个时间段的开始和结束时间
struct tim
{string begin,end;
}p[100000]; // 声明一个tim类型的数组p来存储所有输入的时间段// cmp函数用于比较两个时间段的开始时间以便于之后对时间段进行排序
// 它接受两个tim类型的参数返回一个bool值
bool cmp(tim a,tim b)
{// 如果a的开始时间小于b的开始时间返回true否则返回falsereturn a.beginb.begin;
}// 主函数
int main()
{int n; // 定义一个整型变量n来存储时间段的数量cinn; // 输入时间段的数量char c; // 定义一个字符变量c用于读取时间段中的-字符string b00:00:00, e23:59:59; // 定义两个字符串变量b和e分别存储一天的开始和结束时间// 循环读取每一个时间段的开始和结束时间for(int i0;in;i)cinp[i].begincp[i].end;// 使用sort函数根据cmp函数定义的规则对时间段进行排序sort(p,pn,cmp);// 遍历排序后的时间段for(int i0;in;i){// 如果当前遍历到的时间段的开始时间不等于b上一个时间段的结束时间// 说明两个时间段之间存在未覆盖的时间段if(b!p[i].begin)coutb - p[i].beginendl; // 打印出未覆盖的时间段bp[i].end; // 更新b为当前时间段的结束时间为下一次比较准备}// 如果最后一个时间段的结束时间不等于一天的结束时间// 则打印出这个时间段到一天结束时间之间的未覆盖的时间段if(b!e)coutb - e;return 0;
}这段代码通过读取一系列时间段然后在这些时间段之间找出未被覆盖的时间段并输出。它首先对输入的时间段按照开始时间进行排序然后通过遍历这个排序后的列表来检查并输出未覆盖的时间段。