科丁乐编程K13655 贺新春—集福卡

 题目描述
红包比拼结束以后,小科的爸爸妈妈为了缓解输了的同学们的心情,决定根据每个小朋友年前集福的数量,奖励不同数量的棒棒糖。这又挑起了同学们的激情,这个集福小游戏的规则为:一共有5种不同的福卡,集满5种不同福卡即可兑换一个棒棒糖,福卡用1~5的编号来表示。

总共有n个小朋友参与集福,每个小朋友都集了很多张福卡,现在小科想知道自己能兑换的棒棒糖个数在所有小朋友中兑换的棒棒糖个数的排名(相同的个数算同一名次)。

输入格式
第一行,一个整数n表示包括小科在内的集卡的人数。

第二行,第一个整数m表示小科集的福卡数,紧接着是m个用空格隔开的整数x即小科集到的福卡序号。

接下来n-1行,每行第一个整数m表示其他小朋友集的福卡数,紧接着是m个用空格隔开的整数x即其他小朋友集到的福卡序号。

输出格式
输出为一行,一个正整数k代表小科的排名。

输入 输出样列

3

10 1 2 3 4 5 1 2 3 4 5

5 1 2 3 4 5

15 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 2

img

#我的代码输入第二行数组就报错了,实在是不知道该怎么解决了,请大家帮我看一下,谢谢,如果有其他方法,也可以的

#include <stdio.h>
int max(int x,int b[10]);
int main()
{
    int n,i,j,m,a[10],d[10];
    int big;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d",&m);
        for(j=0;j<m;j++)
        {
            scanf("%d",&a[i]);
            scanf("\n");
        }
        d[i]=max(m,a);
    }
    int final;
    final=d[0];
    for(j=1;j<n;j++)
    {
        if(final<d[j])
        {
            final=d[j];
        }
    }
    printf("%d",final);
    return 0;
}

int max(int x,int b[10])
{
    int j,c[5];
    for(j=0;j<x;j++)
    {
        if(b[j]==1)
            {c[0]++;continue;}
        if(b[j]==2)
            {c[1]++;continue;}
        if(b[j]==3)
            {c[2];continue;}
        if(b[j]==4)
            {c[3];continue;}
        if(b[j]==5)
            {c[4]++;continue;}
    }
    int min=c[0],i;
    for(i=1;i<5;i++)
    {
        if(min>c[i])
        {
            min=c[i];
        }
    }
    return c[i];
}

 

两个问题啊
for(j=0;j<x;j++)
{
if(b[j]==1)
{c[0]++;continue;}
if(b[j]==2)
{c[1]++;continue;}
if(b[j]==3)
{c[2];continue;}
if(b[j]==4)
{c[3];continue;}
if(b[j]==5)
{c[4]++;continue;}
}
一是 数组c[5]你没有初始化为0,就直接++了
二是中间b[j]==3和b[j]==4的处理,为啥c[2]和c[3]后面没有++?

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632