7-5 正常血压 (100 分)
监护室每小时测量一次病人的血压,若收缩压在90 - 140之间并且舒张压在60 - 90之间(包含端点值)则称之为正常,现给出某病人若干次测量的血压值,计算病人保持正常血压的最长小时数。
输入格式:
第一行为一个正整数n,n < 100 其后有n行,每行2个正整数,分别为一次测量的收缩压和舒张压,中间以一个空格分隔。
输出格式:
输出仅一行,血压连续正常的最长小时数。
输入样例:
4
100 80
90 50
120 60
140 90
输出样例:
2
import java.util.Scanner;
public class Main{
private static int num= 0;
private static int maxhour= 0;
private static int[][] input1;
public static void main(String[] args) {
// input = new int[][]{
// {100, 80},
// {90, 50},
// {120, 60},
// {140, 90}
// };
Scanner input = new Scanner(System.in);
num=input.nextInt();
input1= new int[num][2];
for (int i = 0; i <num ; i++) {
input1[i][0]=input.nextInt();
input1[i][1]=input.nextInt();
}
good(0,0);
}
//其实这里的递归方式和for循环的方式都能解决问题,但简单的方式for和递归差异不
//但复杂的问题,使用递归较好,所以递归解决问题更有广泛性
public static void good(int x, int h){
if( x==num){
//由于这里的递归是单线的,所以直接打印就可以了
//如果是多线的,那么就需要数组存储了
System.out.println(maxhour);
return;
}
if(input1[x][0]>=90&&input1[x][0]<=140&& input1[x][1]>=60&&input1[x][1]<=90){
h++;
maxhour=maxhour>h?maxhour:h;
}else{
h=0;
}
good( x+1 ,h);
return ;
}
}
这道题不难, 但网上的基本都是c语言使用for循环来写, 这里我主要尝试使用递归+java来写