解题思路:

①:输入N,M,N表示人数,M表示书的编号的最大值

②:所有书的编号为1,2,3......M

③:定义数组read_like[N]用于存放N个阅读者们,各自喜欢的书的编号

④:定义数组book_liks[M+1](其下标为0到M)每个下标分别对应书的编号

⑤:初始化book_liks[M+1]为0

⑤:输入N个人各自喜欢的书的编号,然后根据编号找到book_liks中对应下标元素,并使该下标

       元素加1

⑥:最后book_liks[M+1]中每个元素的值就表示相喜欢以该元素下标为编号的人的数目

)如:book_liks[i]=4,1<=i<=M,代表喜欢编号为i的人的数目

⑦:最后根据存储在read_like[N]中每个人喜欢的编号,找到book_liks[M+1]中相应元素,

 即若:book_liks[read_like[i]] =4,  0<=i<N ,表示与第i个人喜欢一样的书的人数为4,所以第i个人潜在的朋友有:4-1=3个;


注意事项:
没有潜在朋友输出BeiJu

参考代码:

#include <stdio.h>
#include <malloc.h>

int main()
{
    int    *reader_like, *book_liks;
    int    N, M;


    while ( scanf( "%d%d", &N, &M ) != EOF )
    {
        reader_like    = (int *) malloc( N * sizeof(int) );
        book_liks    = (int *) malloc( (M + 1) * sizeof(int) );

        for ( int i = 0; i < M; i++ )
            book_liks[i] = 0;

        for ( int i = 0; i < N; i++ ) /*输入每位读者喜欢书的编号*/
        {
            scanf( "%d", &reader_like[i] );
            book_liks[reader_like[i]]++;
        }

        for ( int i = 0; i < N; i++ )
        {
            if ( book_liks[reader_like[i]] == 1 )
                printf( "BeiJu\n" );
            else
                printf( "%d\n", book_liks[reader_like[i]] - 1 );
        }
    }

    return(0);
}

别忘点赞哦-.-

点赞(7)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 1 条评论

cpython3 6年前 回复TA
//请教!!!为啥我的代码正确50%
#include <stdio.h>
#include <string.h>
#define MAX 100000
int main()
{
	int N,M;
	int array[MAX];
	int counts[MAX];
	memset(array,0,sizeof(array));
	memset(counts,0,sizeof(counts)); 
	while(scanf("%d%d",&N,&M)!=EOF)
	{
		for(int i=0; i<N; i++)
		{
			scanf("%d",&array[i]);
		}
		for(int i=0; i<N; i++)
		{
			for(int j=0; j<N; j++)
			{
				if(array[i]==array[j]&&i!=j)
				{
					++counts[i];				
				}
			}
		}
		for(int i=0; i<N; i++)
		{
			if(counts[i])
				printf("%d\n",counts[i]);
			else 
				printf("BeiJu\n");
		}
	}
	return 0;
}