pat 1006
来源:互联网 发布:linux极点五笔输入法 编辑:程序博客网 时间:2024/04/28 06:32
Sign In and Sign Out
题目的意思就是有一些人, 来者有先后, 给出每个人的来的时间, 和去的时间,求解第一个来的人和最后一个走的人
我的思路是直接qsort 对时间进行两次排序
附代码:
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<stdlib.h>#define Max_len 20#define Max_num 1000int cmp(const void *a, const void *b);int cmp1(const void *a, const void *b);typedef struct come{char str[Max_len];int hour, min, sec;}come;typedef struct back{char str[Max_len];int hour, min, sec;}back;int main(){come co[Max_num];back ba[Max_num];char temp[Max_len];int m, i, hourc, minc, secc, hourb, minb, secb;scanf("%d", &m);for(i = 0; i < m; i++){scanf("%s %d:%d:%d%d:%d:%d", temp, &hourc, &minc, &secc, &hourb, &minb, &secb);strcpy(co[i].str, temp); co[i].hour = hourc; co[i].min = minc; co[i].sec = secc;strcpy(ba[i].str, temp); ba[i].hour = hourb; ba[i].min = minb; ba[i].sec = secb;}qsort(co, m, sizeof(co[0]), cmp);qsort(ba, m, sizeof(ba[0]), cmp1);printf("%s %s\n", co[0].str, ba[0].str);return 0;}int cmp(const void *a, const void *b){come *c = (come *)a;come *d = (come *)b;if(c -> hour != d -> hour){return c -> hour - d -> hour;}else if(c -> min != d -> min){return c -> min - d -> min;}else{return c -> sec - d -> sec;}}int cmp1(const void *a, const void *b){back *c = (back *)a;back *d = (back *)b;if(c -> hour != d -> hour){return d -> hour - c -> hour;}else if(c -> min != d -> min){return d -> min - c -> min;}else{return d -> sec - c -> sec;}}
0 0
- pat 1006
- PAT 1006
- PAT 1006
- pat 1006
- PAT 1006
- PAT 1006
- PAT 1006
- PAT 1006
- PAT 1006
- PAT-1006
- PAT Basic 1006
- PAT 1006的坑
- PAT (Basic) 1006~1010
- PAT BASIC 1006
- PAT(A) 1006
- PAT(甲级)1006
- PAT Basic 1006
- PAT甲级1006
- VC6.0 下设置控件字体大小
- select io 多路复用
- eclipse常用快捷键
- javascript深入理解js闭包
- PHP特殊字符前加斜杠示例代码
- pat 1006
- ORACLE数据库SQL优化--->基于成本的优化器
- 使用MediaRecorder录制音视频
- SpringMVC视图解析器
- Integer.valueOf(String) 方法之惑
- 选夫婿2
- solr学习第一课----安装前准备
- Android 学习小结
- activerecord 序列化