华为机试题 好友关系管理
好友关系管理 | |
描述: |
现有一个社交网站,其好友推荐策略为:用户A和用户B不是好友,当二人的共同好友数量超过好友推荐阈值m时,就向A和B分别推荐为彼此好友。 本题任务为:对设定的m值,给定一组用户及各自好友列表,对这一组用户,反复自动应用上述好友推荐策略后(假设每次推荐都被采纳),求指定用户的最终好友列表。 注:好友关系是双向的,即:如果用户A是用户B的好友,那么用户B一定也是用户A的好友。 写一个程序,在社交网络中实现: 1)初始化社交网络 2)创建用户 3)增加指定两个用户之间的好友关系 4)反复自动应用好友推荐策略后,获取某个用户的好友数量 5)反复自动应用好友推荐策略后,判断某两个用户间是否存在好友关系 说明: 1、一个用户有且只有一个名字,且不存在重名 2、自己和自己不存在好友关系 3、用户名字大小写敏感 4、用户名字字符串长度范围为[1..20] 5、用户总数小于100个 |
运行时间限制: | 无限制 |
内存限制: | 无限制 |
输入: |
五个整数,好友推荐阈值P,创建用户数量m,增加指定两个用户之间的好友关系数量M,查询某个用户的好友数量n,查询指定两个用户是否是好友N字符串,每个数据一行,按到上面的顺序依次输入数据,共m+M+n+N行字符串字符串,每个一行,共m+M+n+N行字符串 |
输出: |
输出用户的好友数量,共n个,每个一行;如果用户不存在,输出-1,否则输出好友数量。样例中的用户Jack、Peter、Tom的好友数量都是2个。 |
样例输入: |
2 3 3 3 3 //好友推荐阈值2,用户数量为3,增加知道两个用户之间的好友关系数量M,//查询某个用户的好友数量3,查询指定两个用户是否是好友N字符串 Jack Peter Tom //输入了三个用户Jack Peter Peter Tom Jack Tom //增加了三个好友关系JackPeter Tom //查询了这三个用户的好友数量Jack Peter Peter Tom Jack Tom //查询了这三个好友关系是否存在样例输出: |
样例输出: |
2 //Jack几个好友,这里就用到了阈值2 //Peter几个好友2 0 //Jack Peter是否好友0 //Peter Tom是否好友0 //Jack Tom是否好友 |
#include<iostream>
#include<string>
#include<map>
using namespace std;const int maxn = 1010;
bool mp[maxn][maxn]; // mp[i][j] 表示 i 和 j 是否为好友
int num[maxn]; // num[i] 表示第 i 个人有多少个好友int main(){int P, m, M, n, N, i, j, k;scanf("%d %d %d %d %d", &P, &n, &N, &m, &M);string str1, str2;map<string, int> id; // 名字转化为idfor(i = 0; i < m; ++i){cin >> str1;id[str1] = i;}for(i = 0; i < M; ++i){cin >> str1 >> str2;mp[id[str1]][id[str2]] = mp[id[str2]][id[str1]] = 1;}bool flag = 1; // 表示是否会有新的好友对产生int count; // 共同好友的个数while(flag){flag = 0;for(i = 0; i < m; ++i){for(j = i + 1; j < m; ++j){if(mp[i][j]){continue;}count = 0;for(k = 0; k < m; ++k){if(k == i || k == j){continue;}if(mp[i][k] && mp[k][j]){++count;}}if(count > P){mp[i][j] = mp[j][i] = 1;flag = 1; // 有新的好友对产生,需要再次处理}}}}// 统计每个人的好友个数for(i = 0; i < m; ++i){for(j = 0; j < m; ++j){if(mp[i][j]){++num[i];}}}for(i = 0; i < n; ++i){cin >> str1;printf("%d\n", num[id[str1]]);}for(i = 0; i < N; ++i){cin >> str1 >> str2;if(mp[id[str1]][id[str2]]){printf("0\n");}else{printf("-1\n");}}
}
华为机试题 好友关系管理相关推荐
- 【牛客网】华为机试题(00、C++版本)
华为机试题,本来以为对一些基础的程序还是有点信心的:不过不练不知道,一练吓一跳.平时虽然也都码程序,但是一到机试题就各种乱七八的不适应.还是要加强一下练习. 1.字符串最后一个单词的长度 题目描述:计 ...
- 华为电脑c语言总是错误,关于华为机试题求代码!解决方法
关于华为机试题求代码!!! n个字符串,1 如n=3 1.what is local bus? 2.this is local bus. 3.local bus is name sdhfj. 那么最长 ...
- 牛客网华为机试题(JavaScript)
最近在牛客网刷华为机试题,遇到了很多坑,记录: 每一道题目都经过自己实践验证 华为机试题 牛客网在javascript V8引擎下处理输入输出如下: 利用了readline()接收输入的每一行,多行处 ...
- 【牛客网-华为机试题目录】持续更新中
文章目录 博主精品专栏导航 华为机试题:HJ80 整型数组合并(python) 华为机试题:HJ76 尼科彻斯定理(python) 华为机试题:HJ73 计算日期到天数转换(python) 华为机试题 ...
- 华为机试题库+题解【C语言版】
文章目录 前言 1.字符串最后一个单词的长度[***] 描述 输入描述 输出描述 示例 解题代码 2.计算某字符出现次数[****] 描述 输入描述 输出描述 示例 解题代码 3. 明明的随机数[** ...
- 华为机试python编程题_牛客网华为机试题之Python解法
牛客网华为机试题之Python解法 第1题 字符串最后一个单词的长度 a = input().split(" ") print(len(a[-1])) 第2题 计算字符个数 a = ...
- 【华为机试题分析-C/C++】知识点分类总结
专栏地址:https://blog.csdn.net/super828/category_10825347.html 字符串 [华为机试题分析] 1 字符串最后一个单词的长度 [华为机试题分析] 2 ...
- 【华为机试题分析】 4 字符串分割
我的首发平台是公众号[CodeAllen],学习交流QQ群:736386324,本文版权归作者所有,转载请注明出处 [华为机试题分析] 4 字符串分割 #include <stdio.h> ...
- 华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典
文章目录 2023 年用 Python 语言解华为 OD 机试题,一篇博客找全. 华为 OD 机试题清单(机试题库还在逐日更新) 2023 年用 Python 语言解华为 OD 机试题,一篇博客找全. ...
- 华为机试题-20190417
华为某次Java机试题 介绍 1 2 3 介绍 本次机试题,发生时间:2019年04月17日,19:00. 上一次试题,发生时间:2019年04月03日,19:00. 本次机试3题,均AC. 1 题目 ...
最新文章
- 线程或进程绑定到特定的cpu
- 一级域名和二级域名的区别是什么?作用怎样?
- [云炬创业基础笔记] 第三章测试10~12
- Javascript网站繁简转换解决方案
- 有梦想就有前进的动力
- javacurrentmap_Java ConcurrentHashMap.forEach方法代码示例
- vue中src文件夹下各文件_Win10下与虚拟机中的linux共享文件夹
- Github官方app分析——用户身份验证模块
- qq群临时文件转永久
- 专注于操作系统25之软盘镜像
- 备考进行时!2020年中级通信工程师传输与接入(无线)考试大纲
- 北大核心期刊目录2020_音乐舞蹈类核心期刊目录(2020年最新收藏版)
- 如何制作标识标志标签
- 过滤敏感词汇(trie树实现敏感词过滤)
- 感恩节跟进技巧(附邮件模板)
- 大象做梦传媒:做好企业年会策划活动执行方案
- QGIS教程-4:文本数据的加载
- python及pygame雷霆战机游戏项目实战01 控制飞机
- Arduino ESP32 SD卡读写实例
- ccs中c语言定义布尔常量,CCS中寄存器定义方法