1. 原题链接
1006. Sign In and Sign Out (25)
2. 理解题目
输入不超过15位的id_number、进入时间、出去时间;求出最早进入和最晚出去的id_number;
3. 解题思路
[思路1]
可以直接用char 数组存储进入和出去的时间,然后通过strcmp就可以比较时间早/晚;通过strcpy函数
将符合的id_number进行拷贝存储;
[思路2]
可以用C++中的string容器来直接用”>”、”<”来比较时间早、晚;然后用 “=” 直接拷贝id_number;
4. AC代码
//[解法1]
#include<cstdio>
#include<cstring>
const int maxn=20;
int main(){
int n;scanf("%d",&n);
char fir_id[maxn],lat_id[maxn];
char fir[]="24:00:00",lat[]="00:00:00";
char tmp_id[maxn],in[maxn],out[maxn];
for(int i=0;i<n;i++){
scanf("%s%s%s",tmp_id,in,out);
if(strcmp(in,fir)<0){
strcpy(fir_id,tmp_id);
strcpy(fir,in);
}
if(strcmp(out,lat)>0){
strcpy(lat_id,tmp_id);
strcpy(lat,out);
}
}
printf("%s %s\n",fir_id,lat_id);
return 0;
}
//[解法2]
#include<iostream>
#include<string>
using namespace std;
int main(){
int n;scanf("%d",&n);
string fir_id,lat_id;
string fir="24:00:00",lat="00:00:00";
string tmp_id,in,out;
for(int i=0;i<n;i++){
cin>>tmp_id>>in>>out;
if(in<fir){
fir_id=tmp_id;
fir=in;
}
if(out>lat){
lat_id=tmp_id;
lat=out;
}
}
cout<<fir_id<<" "<<lat_id;
return 0;
}