• 第1题:好多鱼!


    牛牛有一个鱼缸。鱼缸里面已经有n条鱼,每条鱼的大小为fishSize[i] (1 ≤ i ≤ n,均为正整数),牛牛现在想把新捕捉的鱼放入鱼缸。鱼缸内存在着大鱼吃小鱼的定律。经过观察,牛牛发现一条鱼A的大小为另外一条鱼B大小的2倍到10倍(包括2倍大小和10倍大小),鱼A会吃掉鱼B。考虑到这个,牛牛要放入的鱼就需要保证:
    1、放进去的鱼是安全的,不会被其他鱼吃掉
    2、这条鱼放进去也不能吃掉其他鱼
    鱼缸里面已经存在的鱼已经相处了很久,不考虑他们互相捕食。现在知道新放入鱼的大小范围[minSize,maxSize](考虑鱼的大小都是整数表示),牛牛想知道有多少种大小的鱼可以放入这个鱼缸。 

    输入描述:
    输入数据包括3行.
    第一行为新放入鱼的尺寸范围minSize,maxSize(1 ≤ minSize,maxSize ≤ 1000),以空格分隔。
    第二行为鱼缸里面已经有鱼的数量n(1 ≤ n ≤ 50)
    第三行为已经有的鱼的大小fishSize[i](1 ≤ fishSize[i] ≤ 1000),以空格分隔。
    输出描述:
    输出有多少种大小的鱼可以放入这个鱼缸。考虑鱼的大小都是整数表示
    输入例子:
    1 12
    1
    1
    输出例子:
    3

    代码:
    //思路是:用2个数组分别存放鱼缸里的鱼和新捕捉的鱼,判断:
    //当鱼缸里鱼的大小是新捕捉鱼的2倍到10时,删除新捕捉鱼数组对应的数
    //反过来,当新捕捉鱼的大小是鱼缸里鱼的2倍到10时,删除新捕捉鱼数组对应的数
    //用了ArrayList,但是在循环里面进行删除操作还是有问题,所有用置零替换删除
    //最后统计非零的个数即可
    import java.util.*;
    public class Main {
        public static void main(String[] args) {
            Scanner sc=new Scanner(System.in);
            int minSize=sc.nextInt();//获取输入参数
            int maxSize=sc.nextInt();
            int n=sc.nextInt();
            int[] fishSize=new int[n];
            for(int i=0;i<n;i++){
                fishSize[i]=sc.nextInt();//鱼缸里的鱼的大小
            }
            List<Integer> putSize=new ArrayList<Integer>();
            for(int i=0;i<maxSize-minSize+1;i++){//新捕捉的鱼的大小
                putSize.add(minSize+i);
            }
            for(int i=0;i<n;i++){//删除掉是鱼缸里已有鱼大小的2到10倍的鱼
                for(int j=0;j<putSize.size();j++){
                    if(putSize.get(j)>=2*fishSize[i]&&putSize.get(j)<=10*fishSize[i]){
                        putSize.set(j, 0);
                    }
                }
            }
            for(int i=0;i<putSize.size();i++){//反过来,鱼缸里已有鱼的大小可能是要放入鱼的2到10倍,也删除要放入的鱼
                for(int j=0;j<n;j++){
                    if(fishSize[j]>=2*putSize.get(i)&&fishSize[j]<=10*putSize.get(i)){
                        putSize.set(i, 0);
                    }
                }
            }
            int count=0;
            for(int i=0;i<putSize.size();i++){
                if(putSize.get(i)!=0)
                    count++;
            }
            System.out.println(count);
            sc.close();
        }
    }
  • 相关阅读:
    MTK 关闭耳机调至最大音量时,提示损伤听力
    MTK LCM的添加
    chmod chown
    ubuntu14.04设置静态IP
    MTK NTP和NITZ更新时间的问题
    Rk3288 双屏异显单触摸
    MTK 修改默认时区
    MTK 屏幕旋转90度
    MTK WIFI底部加入返回按钮
    MTK 自定义按键添加广播
  • 原文地址:https://www.cnblogs.com/dengyt/p/7070162.html
Copyright © 2020-2023  润新知