算法笔记4.2哈希 问题 A: 谁是你的潜在朋友

举报
陈沧夜 发表于 2022/04/30 23:28:40 2022/04/30
【摘要】 题目描述 “臭味相投”——这是我们描述朋友时喜欢用的词汇。两个人是朋友通常意味着他们存在着许多共同的兴趣。然而作为一个宅男,你发现自己与他人相互了解的机会 并不太多。幸运的是,你意外得到了一份北大图...

题目描述
“臭味相投”——这是我们描述朋友时喜欢用的词汇。两个人是朋友通常意味着他们存在着许多共同的兴趣。然而作为一个宅男,你发现自己与他人相互了解的机会 并不太多。幸运的是,你意外得到了一份北大图书馆的图书借阅记录,于是你挑灯熬夜地编程,想从中发现潜在的朋友。
首先你对借阅记录进行了一番整理,把N个读者依次编号为1,2,…,N,把M本书依次编号为1,2,…,M。同时,按照“臭味相投”的原则,和你喜欢读同一本书的人,就是你的潜在朋友。你现在的任务是从这份借阅记录中计算出每个人有几个潜在朋友。
输入
每个案例第一行两个整数N,M,2 <= N ,M<= 200。接下来有N行,第i(i = 1,2,…,N)行每一行有一个数,表示读者i-1最喜欢的图书的编号P(1<=P<=M)
输出
每个案例包括N行,每行一个数,第i行的数表示读者i有几个潜在朋友。如果i和任何人都没有共同喜欢的书,则输出“BeiJu”(即悲剧,^ ^)
样例输入

4 5
2
3
2
1

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

样例输出

1
BeiJu
1
BeiJu

  
 
  • 1
  • 2
  • 3
  • 4

这道题需要使用基本的散列知识,用空间换时间。

#include<iostream>
#include<cstdio>

using namespace std;

int main()
{
	freopen("C://坚果云//算法//问题A谁是你的潜在朋友in.txt","r",stdin);
	freopen ("C://坚果云//算法//问题A谁是你的潜在朋友out.txt","w",stdout);

	int N,M;
	scanf("%d %d",&N,&M);
	int hashmap[M+2]={0};
	int peop[N+2];
	for(int i=1;i<=N;i++)
	{
		scanf("%d",&peop[i]);
		hashmap[peop[i]]++; 
	}
	for(int j=1;j<=N;j++)
	{
		if(hashmap[peop[j]]>1)
			printf("%d",hashmap[peop[j]]-1);
		else
			printf("BeiJu");
		if(j!=N)
		{
			printf("\n");
		}
	}
	
	fclose(stdin);
	fclose(stdout);
	return 0;
	
	
 } 

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

文章来源: blog.csdn.net,作者:沧夜2021,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/CANGYE0504/article/details/88791419

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。