解题思路:
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
- 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<
//输出最大值 - return 0;
- }