(SJTU OJ)1001.二哥摘苹果

题目描述

二哥平日喜欢自己种一些东西,并以此为写程序和看电影之外的最大爱好。最近,二哥种的一棵苹果树到了采摘的时候,但是由于二哥身高的限制,有些苹果太高摘不到。于是二哥借来了一个凳子,踩在上面可以摘到更多的苹果。

二哥是一个懒于行动的人,他想在摘苹果之前知道自己能摘到多少苹果,如果实在太少(苹果树很茂盛,主要是由于身高原因),他宁可坐在树下等苹果自己掉下来砸到头上。

输入格式

输入共有两行。

第1行有3个整数,分别表示二哥的身高、凳子的高度和苹果的个数n。

第2行有n个整数,分别表示每个苹果的高度。

输出格式

输出一个整数m,表示二哥最多能摘到的苹果的个数为m。

说明

对于全部数据:高度为1000以下的正整数,苹果的个数1n1000

Sample Input

177 40 10
180 151 152 193 168 255 278 303 211 217

Sample Output

7

自己编写的程序如下,没有考虑到苹果个数和苹果高度限制;

import java.util.Scanner;

public class Main{

    public static void main(String[] args){

        Scanner in = new Scanner(System.in);
        int m = 0;
        int[] a  = new int[3];
        
        for(int i=0; i<3; i++) {
            a[i] = in.nextInt();
        }
        
        int n=a[2];
        int[] b = new int[n];

        for (int i = 0; i < n ; i++) {
            b[i] = in.nextInt();
        }
        for (int i = 0; i < n; i++) {

            if((a[0] + a[1]) >= b[i] ){
                m++;
            }
    }
        System.out.print(m);        
    }

}

【转载】其他人代码如下,考虑更全面,代码灵活性更好写,需要借鉴;

import java.util.Scanner;

public class Test1{

   private static Scanner scanner;

   private static int tall, tabletall, n, num;

   private static int []array;

   private static void input1(){

      System.out.println("请输入3个数分别表示二哥的身高、凳子的高度和苹果的个数n(以空格隔开)");

      scanner = new Scanner(System.in);

      tall = scanner.nextInt();

      tabletall = scanner.nextInt();

      n = scanner.nextInt();

      System.out.println( "二哥的身高:" + tall + " 凳子的高度:"+ tabletall + " 苹果的个数:" + n );

   }

 

   private static void input2(){

      System.out.println("请输入" + n + "个苹果的高度(以空格隔开):");

      array = new int[n];

      for(int i = 0; i < n; i++){

         array[i] = scanner.nextInt();

         System.out.println("第" + i + "个苹果的高度为:" +array[i]);

      }

   }


   private static void panduan(){

      num = 0;

      for(int i = 0; i < n; i++){

         if( (tall + tabletall) >= array[i] ){

            num++;

         }

      }

      System.out.println( "可以摘到的苹果个数为:"+ num);

   }

   private static void output(){

      System.out.println("二哥共摘到了" + num + "个苹果!!");

   }

 
   public static void main(String args[]){

      boolean t = true;
      /**
       * 判断输入苹果个数范围
       * 1=< n =< 1000
       */
      while(t){

         input1();

         if( (n < 1 || n > 1000) || (tall < 0 || tall > 1000)||( tall < 0 || tall > 1000 ) ){

            System.out.println("输入数字越界,请重新输入:");

            input1();

            break;

         }else{

            t = false;

         }

      }

     /**
      * 判断输入的苹果高度是否大于1000
      */

      t = true;

      while(t){

         input2();

         for(int i = 0; i < n; i++){

            if( array[i]>1000 ){

                System.out.println("苹果高度为1000以下的正整数,请重新输入:");

                input2();

                break;

            }else{

                t = false;

            }

         }

      }

      System.out.println("输入完成!!"); 

      panduan();     

      output();

   }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值