技术经验分享:HDU1234开门人和关门人

简介: 技术经验分享:HDU1234开门人和关门人

问题链接:HDU1234 开门人和关门人。


问题简述:参见上述链接。


问题分析:这个问题不是很困难,还是可以锻炼人处理输入输出的能力。


解决问题时,做两个排序,就可以找出开门的人和关门的人。程序中时间转换为整数(秒单位),以便比较排序。


程序说明:这里同时给出C和C++的程序。


C和C++的排序库程序不一样,分别是qsort()和sort,参数不同,比较程序形式上也不一样。


一些细节还是需要注意的,C++程序中的比较函数,参数是常量和引用。


另外,在出来格式化输入方面,还是C语言有优势,所以C++程序中使用C语言的代码处理输入。


这两个程序都不是最佳解法,参见以下的链接。


参考链接:HDU1234 开门人和关门人(解法二)。其中的程序一边读入数据一边计算开门人和关门人,省去结构数组。


AC通过的C语言程序如下:


/ HDU1234 开门人和关门人 /


#include


#include


struct node


{


char name【20】;


int starttime;


int endtime;


} record【1000】;


int cmp1(const void a, const void b)


{


struct node x = (struct node ) a;


struct node y = (struct node ) b;


return x->starttime - y->starttime;


}


int cmp2(const void a, const void b)


{


struct node x = (struct node ) a;


struct node y = (struct node ) b;


return y->endtime - x->endtime;


}


int main(void)


{


int n, m, i;


int h, mi, s;


// 读入总天数(测试组//代码效果参考:http://www.lyjsj.net.cn/wx/art_22994.html

数)

scanf("%d", &n);


while(n--) {


// 读入记录数


scanf("%d", &m);


// 读入各个记录


for(i=0; i

scanf("%s %d:%d:%d", record【i】.name, &h, &mi, &s);


record【i】.starttime = s + mi 60 + h 3600;


scanf("%d:%d:%d", &h, &mi, &s);


record【i】.endtime = s + mi 60 + h 3600;


}


// 排序(按开门时间)


qsort(record, m, sizeof(record【0】), cmp1);


// 输//代码效果参考:http://www.lyjsj.net.cn/wz/art_22992.html

出开门人名字

printf("%s ",record【0】.name);


// 排序(按关门时间)


qsort(record, m, sizeof(record【0】), cmp2);


printf("%s\n",record【0】.name);


}


return 0;


}


AC通过的C++语言程序如下:


/ HDU1234 开门人和关门人 /


#include


#include


#include


using namespace std;


struct node


{


char name【20】;


int starttime;


int endtime;


} record【1000】;


bool cmp1(const node& a, const node& b)


{


return a.starttime b.endtime;


}


int main()


{


int n, m;


int h, mi, s;


// 读入总天数(测试组数)


cin ] n;


while(n--) {


// 读入记录数


cin ] m;


// 读入各个记录


for(int i=0; i

scanf("%s %d:%d:%d", record【i】.name, &h, &mi, &s);


record【i】.starttime = s + mi 60 + h 3600;


scanf("%d:%d:%d", &h, &mi, &s);


record【i】.endtime = s + mi //代码效果参考:http://www.lyjsj.net.cn/wz/art_22990.html

60 + h 3600;

}


// 排序(按开门时间)


sort(record, record + m, cmp1);


// 输出开门人名字


cout [ record【0】.name [ " ";


// 排序(按关门时间)


sort(record, record + m, cmp2);


cout [ record【0】.name [ endl;


}


return 0;


}

目录
打赏
0
0
0
0
0
分享
相关文章
workman(四)配置nginx支持webscoket
Webscoket的集成库workerman,在域名配置的问题上,官方文档是有给出示例的:请移步《官方文档》 第一次用,可能看不太懂,我这里大概解释一下。
259 0
mysql中find_in_set()函数用法详解及增强函数
总结而言,`FIND_IN_SET()`是MySQL中处理由逗号分隔的字符串列表的一种便捷方法,尤其适用于列表相对较短且不经常更改的场景。然而,对于更为复杂的需要高性能和可扩展性的数据库设计,它可能不是最优选择,应考虑使用更加正规化的数据库结构。
1482 2
mysql中find_in_set()函数用法详解及增强函数
利用itchat搭建微信机器人详解(附三个实用示例)(中)
2011年1月21日,微信推出第一个正式版本,到现在已有7个年头。从一开始的不被看到好,到现在的用户量超10亿,大众的日常生活越来越离不开微信。人生苦短我用Python,有没有办法通过Python来对我们使用微信提供一些便利呢? 答案肯定是有的,在Github上有一个基于微信网页版接口微信开源库:itchat,通过几十行的代码就能轻松实现一个微信机器人。本章我们就来了解学习这个库,然后通过三个实用案例来帮大家玩转这个库。
1423 0
YOLOv3物体/目标检测之实战篇(Windows系统、Python3、TensorFlow2版本)
 基于YOLO进行物体检测、对象识别,在搭建好开发环境后,先和大家进行实践应用中,体验YOLOv3物体/目标检测效果和魅力;同时逐步了解YOLOv3的不足和优化思路。
365 0
Spring Boot的Web开发之Thymeleaf模板引擎的解析及使用(Thymeleaf的基础语法以及常用属性)
Spring Boot的Web开发之Thymeleaf模板引擎的解析及使用(Thymeleaf的基础语法以及常用属性)
333 0
数据结构之顺序表的实现(含全部代码)
数据结构之顺序表的实现(含全部代码)
61 0
C语言进阶之通讯录的实现(静态版和动态版)以及动态内存管理(上)
开头我们先断言,防止传NULL指针,第二步初始化长度为0,最后将结构体数组中的元素均初始化为0即可。
Java安全之Commons Collections3分析
在学习完成前面的CC1链和CC2链后,其实再来看CC3链会比较轻松。
135 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问