算法題:好多魚(牛客網)

[編程題] 好多魚!
牛牛有一個魚缸。魚缸裏面已經有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



解答(C語言):

#include <stdio.h>
#include <stdlib.h>


int isAChiB(int a,int b)
{
    if(a>=b*2&&a<=b*10)
        return 1;
    else
        return 0;
}
int isBChiA(int a,int b)
{
    if(b>=a*2&&b<=a*10)
        return 1;
    else
        return 0;
}
int main()
{
    int minSize,maxSize,n,i,j;
    scanf("%d",&minSize);
    scanf("%d",&maxSize);
    scanf("%d",&n);
    int fishSize[50]={0};
    for(i=0;i<n;i++)
        scanf("%d",&fishSize[i]);
    int coutn=0;//統計數量
    for(j = minSize;j<maxSize+1;j++)
    {
        int flag = 1;//設置標記
        for(i = 0; i<n;i++){
            //檢測A吃B或B吃A的情況
            if(isAChiB(j,fishSize[i])||isBChiA(j,fishSize[i])){
                flag = 0;
                break;
            }
        }
        if(flag == 1)
            coutn++;
    }
    printf("%d",coutn);
    return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章