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


}

相关文章
|
算法 Android开发 C++
LeetCode 周赛上分之旅 #49 再探内向基环树
学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越抽象,它能覆盖的问题域就越广,理解难度也更复杂。在这个专栏里,小彭与你分享每场 LeetCode 周赛的解题报告,一起体会上分之旅。
96 1
|
8月前
|
数据安全/隐私保护
BUUCTF 穿越时空的思念 1
BUUCTF 穿越时空的思念 1
195 1
|
存储 缓存 NoSQL
七夕节迟来的礼物
七夕节迟来的礼物
100 0
|
机器学习/深度学习
1389:亲戚
1389:亲戚
110 0
我真想和偷卖源码的人打一架
1,系统的演示;2,系统的核心代码;3,系统源码获取
140 0
我真想和偷卖源码的人打一架
|
机器学习/深度学习 安全
|
算法
每日一题之亲戚
大家好,我是泡泡,给大家带来每日一题的目的是为了更好的练习算法,我们的每日一题这个月进度是数据结构,让大家练到各种各样的数据结构题目,熟悉数据结构的增删改查,一年以后,蜕变成为一个不一样的自己!
158 0
A计划救公主
可怜的公主在一次次被魔王掳走一次次被骑士们救回来之后,而今,不幸的她再一次面临生命的考验。魔王已经发出消息说将在T时刻吃掉公主,因为他听信谣言说吃公主的肉也能长生不老。年迈的国王正是心急如焚,告招天下勇士来拯救公主。不过公主早已习以为常,她深信智勇的骑士LJ肯定能将她救出。
191 0
|
Java
HDU - 2018杭电ACM集训队单人排位赛 - 1 - Problem C. 狙击敌人
HDU - 2018杭电ACM集训队单人排位赛 - 1 - Problem C. 狙击敌人
135 0
|
存储 监控 安全
杂货机器人翻车实录:会被路人“吓”到,还会跟错主人!3千美元怕是买了个寂寞?
杂货机器人翻车实录:会被路人“吓”到,还会跟错主人!3千美元怕是买了个寂寞?
215 0