讲解
这道题大体思路是:
- 先不断读入,为了节省空间(当然这可以不需要),我们可以直接在读入后进行操作,输入可以用
scanf
(更方便),但我给的代码就直接使用cin
。 - 接着就进行直接判断,可以先将时,分转化成目前离当日
00
:
00
00:00
00:00 过去了多长时间,这要好计算,再判断大小,要是之前时间
>
>
> 现在时间,则
时光倒流了又过了一天。 - 切记,还要有一个计数器,初值为一,如果之前时间 = = =现在时间,则计数器 + 1 +1 +1 ,否则计数器变为 1 1 1 ,如果计数器值大于 10 10 10,则又过了一天,并将计数器的值改为 1 1 1。
code
#include<iostream>
using namespace std;
int main()
{
int n;
int cnt = 1;
int lastt = -1;//上一次的
int ans = 1;
cin >> n;
for (int i = 0; i < n; i++)
{
int h, m, t;
string s, nouse1/*后面的命令,没用!*/;
char nouse2/*一开始的[和后面的:*/;
cin >> nouse2 >> h >> nouse2 >> m >> s;
getline(cin, nouse1);//输入
h %= 12;//不能少
if (s == "a.m.]:")t = h * 60 + m;午
else t = 720 + h * 60 + m;
if (lastt == t)//如果之前和现在相同,计数器+1
{
cnt++;
}
else
{
cnt = 1;
}
if (lastt > t || cnt > 10)
{
ans++;
cnt = 1;
}
lastt = t;
}
cout << ans;
return 0;
}
感谢 NaOH_Frog 大佬。