1006 Sign In and Sign Out
题目大意
选出一个最早的时间,和一个最晚的时间
算法思想
- 处理时间的时候比较麻烦,用的sscanf才能将string换成int比较
- vs编译的时候好像只能sscanf_s才能编译通过,但是提交时,比较改成sscanf才能编译
- 没什么特殊点,写出来就满分
代码
#include<iostream>
#include<string>
#include<vector>
using namespace std;
bool compare(string s, string p)//比较时间函数
{
int hour1, min1, sec1;
int hour2, min2, sec2;
sscanf(s.c_str(), "%d:%d:%d", &hour1, &min1, &sec1);//我用vs就得换成sscanf_s才行,但是提交时会编译出错,必须换成sscanf才能提交
sscanf(p.c_str(), "%d:%d:%d", &hour2, &min2, &sec2);
if (hour1 < hour2)//依次比较时分秒
return true;
else if (hour1 > hour2)
return false;
else
{
if (min1 < min2)
return true;
else if (min1 > min2)
return false;
else
{
if (sec1 < sec2)
return true;
else if (sec1 > sec2)
return false;
else
return false;
}
}
}
int main()
{
int n;
int i,j;
string ear, las;
string eaid, laid;
cin >> n;
vector<vector<string>>time(n);
for (i = 0; i < n; i++)//输入n个成员
{
string a, b, c;
cin >> a >> b >> c;
time[i].push_back(a);
time[i].push_back(b);
time[i].push_back(c);
}
ear = time[0][1];//先选出一个最早和最晚
eaid = time[0][0];
las = time[0][2];
laid = time[0][0];
for (i = 1; i < n; i++)
{
if (!compare(ear, time[i][1]))//比较谁更小,所以要加!
{
ear=time[i][1];
eaid = time[i][0];
}
if (compare(las, time[i][2]))//选出谁更大
{
las = time[i][2];
laid = time[i][0];
}
}
cout << eaid << " " << laid;
return 0;
}