解题思路:
1.由题可知,一共有n行,每行包含两个整数,分别对应着收缩压和舒张压,并且直到收缩压在90-140之间是正常的,舒张压在60-90之间是正常的
2.再看题目,要求的并不是正常的累计数,而是保持正常的最长时间数,什么意思呢?比如第一个小时正常,第二个小时不正常,第三第四个小时正常,那么输出的应该是2即第三第四个小时的连续正常的时间,那么我们不能用常规的累加器来求和了
3.应该是sum累加依次就要去和最大值max比较,因为sum可能会因为中间的依次不正常而归0,所以我们设max初始化为0后,如果血压都正常,sum++,紧接着对sum进行判断,if(sum>max),max=sum;否则,血压不正常的话sum要归0,继续判断
4.最后输出max的值即可
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,sum=0,max=0;//sum为累加正常血压时长,max存储最大值
cin>>n;
int x,y;//分别表示收缩压和舒张压
for(int i=1;i<=n;i++)
{
cin>>x>>y;
if(x>=90&&x<=140&&y>=60&&y<=90)//如果血压正常
{
sum++;//累加器累加
if(sum>max)//如果正常时长大于max
max=sum;//max更新
}
else//如果血压不正常
sum=0;//累加器开始从0累加
}
cout<<max;//输出最大值
return 0;
}