技术经验分享: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;


}

相关文章
|
JavaScript 前端开发 中间件
扶我起来,前端还没倒下,我不能睡
扶我起来,前端还没倒下,我不能睡
|
数据安全/隐私保护
BUUCTF 看我回旋踢1
BUUCTF 看我回旋踢1
139 0
|
机器学习/深度学习 安全
A计划救公主
可怜的公主在一次次被魔王掳走一次次被骑士们救回来之后,而今,不幸的她再一次面临生命的考验。魔王已经发出消息说将在T时刻吃掉公主,因为他听信谣言说吃公主的肉也能长生不老。年迈的国王正是心急如焚,告招天下勇士来拯救公主。不过公主早已习以为常,她深信智勇的骑士LJ肯定能将她救出。
196 0
|
Java
HDU - 2018杭电ACM集训队单人排位赛 - 1 - Problem C. 狙击敌人
HDU - 2018杭电ACM集训队单人排位赛 - 1 - Problem C. 狙击敌人
141 0
|
架构师 程序员
对话亲历者|鲁肃:我在支付宝“拧螺丝“的日子
他是支付宝技术平台的奠基人之一,但是他总说“这还不是我心中最完美的架构”;他行事低调但却有着“此时此地,非我莫属”的豪气;他曾无数次充当救火大队长,但自评只是“没有掉队的那个人”。
17646 0
|
计算机视觉 算法 双11
爆料!传阿里人靠脸吃饭,真相是......
图像识别是机器智能的一个重要领域。图像识别使得机器能够“看”事物,甚至包括人类无法看到的事物。本期,我们将为大家介绍一个“图像识别”在阿里技术实践案例,和大家一起发现图像算法之美。
1904 0
|
架构师 Java 程序员
又有程序猿倒下了(华为)!这是有多累啊?再一次输给了生活....
事例一:震惊IT界天才程序员跳楼自杀事件,最杀人的还是人心 2017年9月7日凌晨5点左右,WePhone创始人兼开发者苏享茂,在公司附近的住所处跳楼自杀。
1477 0