一、题目链接
http://noi.openjudge.cn/ch0105/24/
二、解题思路
◎ 循环输入每次测量的收缩压和舒张压:
→ 如果当次测量的血压正常,当前正常血压时数current加1;
*** 如果保持正常血压的最长时数ans小于当前正常血压时数current,则将ans更新为current;
否则,说明当次测量的血压不正常,当前正常血压时数current清零;
◎ 循环结束后,即可求出保持正常血压的最长时数ans。
三、实施步骤
◎ 首先,定义并输入int类型的整数n,代表测量次数;
◎ 其次,定义四个int类型的整数sp、dp、ans、current,分别代表每次测量的收缩压、舒张压、保持正常血压的最长时数、当前正常血压时
数,初始时ans、current均为0;
◎ 然后,通过标记i代表测量血压次数的编号,i从1开始,到n为止,更新步长为1,循环处理如下:
→ 输入当次测量的收缩压sp和舒张压dp;
→ 如果90<=sp&&sp<=140&&60<=dp&&dp<=90:令current++;
*** 如果ans<current:令ans=current;
否则:令current=0;
◎ 最后,输出ans。
四、C++程序
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int sp;
int dp;
int ans = 0;
int current = 0;
for (int i = 1; i <= n; i++)
{
cin >> sp;
cin >> dp;
if (90 <= sp && sp <= 140 && 60 <= dp && dp <= 90)
{
current++;
if (ans < current)
{
ans = current;
}
}
else
{
current = 0;
}
}
cout << ans;
return 0;
}