首页 > 试题广场 >

好多鱼!

[编程题]好多鱼!
  • 热度指数:8408 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
牛牛有一个鱼缸。鱼缸里面已经有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

输入

1 12 1 1

输出

3

import java.util.Scanner;
public class Test {

 public static void main(String[] args) {
  int[] fishSize;
  int n, minSize, maxSize, count;
 Scanner sc = new Scanner(System.in);
  System.out.println("输入所要放入鱼的尺寸范围min和max");
  System.out.print("min:");
  minSize=sc.nextInt();
  System.out.print("max:");
  maxSize=sc.nextInt();
  System.out.println("输入鱼的数量");
  n = sc.nextInt();
  fishSize = new int[n];
  System.out.print("输入每条鱼的尺寸.");
  for (int i = 0; i < n; i++) {
   System.out.print("第" + (i + 1) + "条鱼的尺寸是:");
   fishSize[i] = sc.nextInt();
  }
  count=0;
  for(int i=minSize;i<=maxSize;i++){
   int temp=0;
   for(int j=0;j<n;j++){
    
    if((i>10*fishSize[j]||i<2*fishSize[j])&&(fishSize[j]>10*i||fishSize[j]<2*i)){
     temp++;
    }
   }
   if(temp==n)
   {
   count++;
   }
   
  }
  int result=count;
  System.out.println(result);
 }
}

发表于 2017-12-06 20:23:25 回复(0)
public void fish() {


Scanner sc = new Scanner(System.in);
int minSize = sc.nextInt();
int maxSize = sc.nextInt();

sc = new Scanner(System.in);

int n = sc.nextInt();

sc = new Scanner(System.in);

String[] input = sc.nextLine().split(" ");

String[] now = input;

int size = 0;

for (int i = minSize; i <= maxSize; i++) {

    boolean flag = true;

    for (String j : now) {

        int t = Integer.parseInt(j);

       if (i >= 2 * t && i t / 10) {

           flag = false;

           break;


        }
    }
   if (flag) {


     size++;
    }
}System.out.println(size);

}
编辑于 2017-08-10 16:02:57 回复(0)
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        //接受输入参数
        Scanner scanner = new Scanner(System.in);
        int minSize = scanner.nextInt(); //新放入鱼范围的最小值
        int maxSize = scanner.nextInt();//新放入鱼范围的最大值
        int inNumber = scanner.nextInt();//鱼缸里面已经有鱼的数量
        int[] inFishSize = new int[inNumber]; //定义一个数组
        for (int i = 0; i < inNumber; i ++) {
            inFishSize[i] = scanner.nextInt();//初始化已经有的鱼的大小inFishSize[i]
        }

        int canPut = 0;//可以放进鱼的种类数

        for (int i = minSize; i <= maxSize; i ++) { //遍历输入的范围,逐个查看每中大小的鱼是否可以放进去
            boolean willBeEaten = false; //是否被吃,true 被吃。
            for (int j = 0; j < inNumber; j ++) {
                if ((10 * i >= inFishSize[j] && 2 * i <= inFishSize[j])
                        || (i >= inFishSize[j] * 2 && i <= inFishSize[j] * 10)) {
                    willBeEaten = true;
                    break; //一旦发现此鱼不能放进去,break,跳出循环,避免多余的检查
                }
            }
            //如果这条鱼可以不被鱼缸中其他鱼吃。或者被吃。则canPut++
            if (!willBeEaten) {
                canPut ++;
            }
        }
        System.out.println(canPut);
    }
}


发表于 2017-03-12 10:51:53 回复(8)
package suanfa;

import java.util.Arrays;
import java.util.Scanner;
import java.util.concurrent.SynchronousQueue;

/*
  牛牛有一个鱼缸。鱼缸里面已经有n条鱼,每条鱼的大小为fishSize[i] (1 ≤ i ≤ n,均为正整数),牛牛现在想把新捕捉的鱼放入鱼缸。鱼缸内存在着大鱼吃小鱼的定律。经过观察,牛牛发现一条鱼A的大小为另外一条鱼B大小的2倍到10倍(包括2倍大小和10倍大小),鱼A会吃掉鱼B。考虑到这个,牛牛要放入的鱼就需要保证:
1、放进去的鱼是安全的,不会被其他鱼吃掉
2、这条鱼放进去也不能吃掉其他鱼
鱼缸里面已经存在的鱼已经相处了很久,不考虑他们互相捕食。现在知道新放入鱼的大小范围[minSize,maxSize](考虑鱼的大小都是整数表示),牛牛想知道有多少种大小的鱼可以放入这个鱼缸。 */
public class Fish {
public static void main(String[] args) {
int size=0;
Scanner scanner=new Scanner(System.in);
int min=scanner.nextInt();
int max=scanner.nextInt();
int n=scanner.nextInt();
int fish[]=new int[n];
for(int i=0;i<n;i++){
fish[i]=scanner.nextInt();
}
Arrays.sort(fish);
for(int i=min;i<=max;i++){
boolean flag=compare(i,fish);
if(flag){
System.out.println(i);
size++;
}
}
System.out.println(“一共有:”+size);
}

private static boolean compare(int insertValue, int[] fish) {
// TODO Auto-generated method stub
if(fish.length==0){
return true;
}
if(insertValue*10<fish[0]||insertValue>fish[fish.length-1]*10){
return true;
}
int i=0;
for(i=0;i<fish.length;i++){
float min1=fish[i]/2;
float min2=fish[i]/10;
float max1=fish[i]*2;
float max2=fish[i]*10;
if((min2<=insertValue&&min1>=insertValue)||(max1<=insertValue&&max2>=insertValue)){
break;
}
}
if(i==fish.length){
return true;
}else{
return false;
}
}

}

发表于 2017-03-09 15:49:30 回复(0)

热门推荐

通过挑战的用户