【山科OJ】Problem A: 社交网络的好友推荐
Description
Jack同学在人人网上注册了一个用户,发现人人网需要回答一些问题,而后网站根据自己的回答向自己推荐了一些具有相似回答的网友。Jack同学恰好正在学习编程,想编写一个程序来模拟这个好友推荐功能。
为了实现这一目标,Jack同学是这样设想的:假定网络中的注册用户不超过N个,每位用户注册时需回答M个问题(每个问题都是选择题,且是单选),并指定一个阈值Q。设Tom和Mary是两个注册用户,而且Tom和Mary设定的阈值分别是Q1和Q2,那么:
(1)当且仅当Tom与Mary对M个问题的回答有不少于Q1个是相同答案时,才可以向Tom推荐Mary。
(2)当且仅当Tom与Mary对M个问题的回答有不少于Q2个是相同答案时,才可以向Mary推荐Tom。
现在,我们已经知道了N个用户对M个问题的答案以及设定的阈值Q,请帮Jack设计一个程序来模拟好友推荐功能。
Input
输入是多行的。第一行包含两个整数,分别是N和M的值,代表用户个数及问题个数,且0<N<=100、0<M<=20。
从第二行开始,每行表示一个用户给出的M个问题的答案。其中第一个字符串是用户名(不超过20个字符,且仅含字母、数字和下划线);之后是一个空格和M个大写字母A~Z,第j个字母表示该用户的第j个答案,而且两个字母之间用一个空格隔开;最后是一个整数,表示该用户设定的阈值。
比如在Sample Input中,有5名用户,10个问题。用户是Jack、Tom、Jackson、Mammal_1、Bill_Gates。其中Tom给出的10个问题的答案是A B C D E A B A D E,且指定的阈值是9。
Output
输出也是多行,每一行代表为一个用户推荐的好友列表。其顺序与输入顺序相同:即按照输入的用户名顺序给出为每个用户推荐的好友。
每一行的格式是:第一个字符串是用户名,之后是好友列表,两者之间用冒号隔开。好友列表是向该行指定的用户推荐的好友用户名,按照输入顺序顺次输出好友的用户名。如果该行指定的用户没有可以推荐的好友,则输出“NONE!”。
输出的对齐要求是:每行指定的用户名(即向其推荐好友的用户名)的输出宽度是所有用户中最长的用户名占用的宽度,且左对齐。好友列表中的用户名的输出宽度是用户名的实际宽度,且两两之间用逗号(半角)隔开。
Sample Input
5 10
Bill_Gates A A A A A B B B B B 3
Tom A B C D E A B A D E 9
Jackson A A A A A B B B B B 4
Mammal_1 B B B B B B B B B B 6
Jack A B A D E A B C A E 5
Sample Output
Bill_Gates:Jackson,Mammal_1,Jack
Tom :NONE!
Jackson :Bill_Gates,Mammal_1
Mammal_1 :NONE!
Jack :Tom
HINT
每个用户指定的阈值是不同的,所以可以向Tom推荐Mary,不代表可以向Mary推荐Tom。
Append Code
#include<stdio.h>
#include<string.h>
#define LenN 101
#define LenM 21
typedef struct
{char n[21]; // 昵称char m[LenM]; //选项int a; //阈值
}Peo;int main()
{int x,y,max=0;scanf("%d %d",&x,&y);Peo Na[x];for(int i=0;i<x;i++){scanf("%s",Na[i].n);if(strlen(Na[i].n)>max)//计算名字最长的人名字长度,为了对其补空格{max=strlen(Na[i].n);}for(int j=0;j<=y;j++) //输入选项{scanf("%c ",&Na[i].m[j]);}scanf("%d",&Na[i].a); //输入每个人的阈值}for(int i=0;i<x;i++){printf("%s",Na[i].n);if(strlen(Na[i].n)<max) //不是最长名字,补齐空格{for(int j=0;j<max-strlen(Na[i].n);j++){printf(" ");}}printf(":");int f=0;for(int k=0;k<x;k++){if(k==i) k++;int flag=0;for(int l=1;l<=y;l++){if(Na[i].m[l]==Na[k].m[l]) flag++;//判断每个选项是否相等}if(flag>=Na[i].a){if(f!=0) printf(",");printf("%s",Na[k].n);f++; //判断有几个好友}}if(f==0)printf("NONE!");if(i!=x-1)printf("\n");}return 0;
}
【山科OJ】Problem A: 社交网络的好友推荐相关推荐
- 【山科OJ】Problem D: 藏头诗
Description 有个小伙暗恋同班的姑娘,但是苦于害羞腼腆不敢直抒胸臆.于是小伙打算写一首英文情诗给她.为了使这首情诗高端霸气上档次,小伙经过三天三夜的精心创作写了一首藏头的情诗.请问你能看出他 ...
- 山科oj2307 Problem C: Cherry
这道题还是挺水的 我朋友的 #include <bits/stdc++.h> using namespace std; class Cherry {public:Cherry(double ...
- 安科 OJ 1190 连接电脑 (并查集)
时间限制:1 s 空间限制:128 M 传送门:https://oj.ahstu.cc/JudgeOnline/problem.php?id=1190 题目描述 机房里有若干台电脑,其中有一些电脑已经 ...
- 社交网络中基于张量分解的好友推荐
社交网络中基于张量分解的好友推荐 摘要 引言 相关研究 问题描述 所提好友推荐方法 实验验证 结论 摘要 社交网络中快速增长的用户对现有好友推荐系统提出了挑战.本文我们用张量分解模型基于用户的标签行为 ...
- YTU OJ Problem 3013
YTU OJ Problem 3013 皇后问题(递归) 题目描述 编写一个函数,求解皇后问题:在 n × n 的方格棋盘上,放置 n 个皇后,要求每个皇后不同行.不同列.不同左右对角线. 要求: 1 ...
- YTU OJ Problem 2013
YTU OJ Problem 2013 C语言实验 - 一元二次方程 II 题目描述 求一元二次方程ax²+bx+c=0 的解. a,b,c为任意实数. 输入 输入数据有一行,包括 a,b,c 的值. ...
- 社交网络SNS的好友推荐算法
花了几天看了些做社交的好友推荐,现在很多App都有社交场景,本身就是做用户的场景,所以以后肯定要在这块有一些应用.像早期的论坛类的更偏重资讯类的信息,后来像优酷土豆这又是做视频类,网易云音乐做音乐类. ...
- 山科机器人招聘| 算法总监及视觉、规划、融合定位算法工程师
公司概况 山科机器人是国内领先.全球前十的花园机器人公司,主要从事智能花园机器人的研发和销售, 未来三年目标是成为全球前三的花园机器人公司.母公司浙江白马实业,年销售额约10亿元,产品以欧美市场为主, ...
- 共同好友推荐java_一种社交网络下的好友推荐算法
A New Link Prediction Algorithm Based on Social Network ZHANG Mengzhe 1 张萌哲 女 硕士研究生,主要研究方向:社交网络和个性化推 ...
最新文章
- 【直播回顾】云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第19讲):Java Spring Cloud微服务架构模式与开发实战...
- c3p0如何配置多数据源的解决方法
- Python3解决UnicodeDecodeError:'utf-8' codec can't decode byte..问题终极解决方案
- Hackbar PJ
- flink查看operater链的中间结果+SingleOutputStreamOperator的用法
- 对clear float 的理解
- PHP生成静态网页的方法
- P1828 香甜的黄油 Sweet Butter (spfa)
- php 顺序排序,PHP顺序排序
- python 写一个scheme解释器(一)
- 计算机辅助制造讲义翻译,计算机辅助制造讲义-2007-2演示文稿.PPT
- Linux串口终端驱动——S3C6410平台
- kafka与mysql持久化_漫游Kafka设计篇之数据持久化
- 网站上点击自定义按钮发起QQ聊天的解决方案
- 01背包问题 —— 【算法设计】分支限界法
- 下拉列表组合折线图,这样的Excel动态图表,你会吗?
- XMind 2021 Mac 去水印教程
- 5V和USB供电 的隔离电路
- 目标跟踪 OP,CLE,DP,AUC的概念和计算
- 用WebView秒做一款简易的浏览器app