题目
题解
其实这道题还是有点难的。。。。
难点我觉得主要有两个:
1.能够想到将一组输入转换为取出和归还两个操作,从而建立出一个操作队列(这么想来,是不是应该用队列来做更好一点?)
2.能够理清楚操作序列中的三级排列顺序,从而写出比较函数
这里重点讲一下。首先我们阅读题目,然后理清楚操作序列的先后逻辑序列即可。先还号码小的钥匙,先进行还操作后进行取操作,先进行时间早的操作,再进行时间晚的操作,理请楚这个逻辑后,我们就可以写cmp函数了。
bool cmp(KEY a,KEY b)//三级排序,先还小的,先还后取,先执行早的
{
if(a.time==b.time)
{
if(a.statue==b.statue)
{
return a.k_num<b.k_num;
}
else
return a.statue>b.statue;
}
else
return a.time<b.time;
}
写完这个函数之后,其实已经做完一半了,剩下的就是根据操作序列,对发生的操作进行模拟即可。