问题标题: 酷町堂:求助:3283 鱼缸 (fishbowl)

0
0
已解决
许金夫
许金夫
初级天翼
初级天翼

3283   鱼缸 (fishbowl)

题目描述 Description

下午,爸爸和酷町猫满载而归。他们总共钓了n条鱼,这些鱼有大有小。由于这些鱼太多了,一时吃不完,所以酷町猫
打算把这些鱼都放到鱼缸里养起来。这时爸爸却和酷町猫说:“大鱼吃小鱼,小鱼吃虾米,你不能把大鱼和小鱼放在同
一个鱼缸里,不然大鱼可能会把小鱼吃掉的,每个鱼缸里最多只能装下4条鱼”。这样一来可难倒酷町猫了,请你帮
酷町猫算一下,最少需要多少个鱼缸,才能把这些鱼分开装下。

输入描述 Input Description

第一行输入一个正整数n(100<=n<=100000),表示鱼的数量
第二行输入n个空格隔开的正整数,分别表示第i条鱼的重量wi(1<=wi<=1000)。

输出描述 Output Description

输出一个正整数,表示最少需要的鱼缸数量。

样例输入 Sample Input

 

样例输入1
5
1 2 3 4 5

--------------------------------------------------------------------------
样例输入2
10
1 3 3 3 3 3 2 5 5 1

样例输出 Sample Output

 

样例输出1
5

--------------------------------------------------------------------------
样例输出2
5

 

#include<iostream>
#include<iomanip>
#include<cstdio>
#include<cmath>
#include<ctime>
#include<string>
#include<cstring>
#include<algorithm>
using namespace std;
int n,a,sum[1005],k=0;
int main()
{
	cin>>n;
    for(int i=0;i<n;i++){
        cin>>a;
        sum[a]++;
    }
    for(int i=0;i<1000;i++){
        if(sum[i]>4){
            k+=sum[i]/4+1;
        }
        else if(sum[i]>0){
            k++;
        } 
    }
    cout<<k;
    return 0;
}

 

许金夫在2020-04-10 22:35:01追加了内容

自顶一下


3
已采纳
董子墨
董子墨
中级天翼
中级天翼

你输出的if条件错了

应该为:

if(sum[i]%4==0)//如果鱼的数量是4的倍数
    k+=sum[i]/4;
else
    k+=sum[i]/4+1;

 

0
曹博扬
曹博扬
初级天翼
初级天翼

循环(int i=1;i<=n;i++)
    {
        输入>>w;
        a[w]++;
    }
    循环(int i=1;i<=1000;i++)
    {
        判断(a[i]%4==0)
          s=s+a[i]/4;
        判断
          s=s+a[i]/4+1;
    }
    输出<<s;

我要回答