【题目链接】
ybt 1076:正常血压
OpenJudge NOI 1.5 24:正常血压
【题目考点】
1. 循环统计连续处于某种状态的次数
例:
- 输入一个由英文数字组成的字符串,求其中最多连续出现几个数字。
- 输入一个二进制数,求其中最多连续出现几个1。
- ybt 1116:最长平台 | OpenJudge NOI 1.9 12:最长平台
这类问题一般做法:
- 设置统计变量c,初值为0(根据具体情况,也许需要初值为1),设置cMx表示统计变量c可能达到的最大值
- 循环遍历各个状态
- 如果遇到目标状态,统计变量c增加1。判断c是否比cMx大,如果是,把c赋值给cMx。
- 如果遇到非目标状态,统计变量c还原为0。
【解题思路】
- 设置变量c表示血压连续正常的次数,设cm表示血压连续正常的最大次数
- 循环输入高压低压,判断这一组高压低压是否正常,如果是,c增加1,判断c是否比cm大,如果是,把c赋值给cm。否则,c还原为0。
- 最后输出cm的值
【题解代码】
解法1:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n, h, l, c = 0, cm = 0;//h:收缩压,l:舒张压 c:血压连续正常的次数 cm:血压连续正常的最大次数
cin >> n;
for(int i = 0; i < n; ++i)
{
cin >> h >> l;
if(h >= 90 && h <= 140 && l >= 60 && l <= 90)//判断这一组高低压是否正常
{
c++;//如果满足条件,则正常血压次数计数
if(c > cm)
cm = c;
}
else//如果不满足条件,则正常血压次数置为0
c = 0;
}
cout << cm;
return 0;
}