Manchester


私信TA

用户名:wenyajie

访问量:312519

签 名:

在历史前进的逻辑中前进,这个逻辑就是人心向背的逻辑

等  级
排  名 1
经  验 62698
参赛次数 1
文章发表 188
年  龄 0
在职情况 学生
学  校 Xiamen University
专  业 计算机科学

  自我简介:

在历史前进的逻辑中前进,这个逻辑就是人心向背的逻辑

解题思路:

①:输入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);
}

别忘点赞哦-.-

 

0.0分

1 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答

代码解释器

  评论区

//请教!!!为啥我的代码正确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;
}
2018-12-30 00:29:50
  • «
  • 1
  • »