正常血压 -递归解法

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来写

猜你喜欢

转载自blog.csdn.net/qq_35394891/article/details/84454601