有这样一道宠物社交的算法题:如果我家的猫喜欢你家的狗,那么他们就可以成为好朋友,假设有n只宠物和m对朋友关系,那么这些宠物之间能够形成多少个朋友圈?(eg:现在有5只宠物,有小猫1,小猫2,小猫3,小狗1,小狗2,小猫1和小狗1是好朋友,小猫2和小狗1是好朋友,小猫3和小狗2是好朋友。那么它们就形成了两个朋友圈。)
我们先来看看什么是并查集,在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。
其实我们可以很容易的发现这个形成朋友圈的问题和并查集很相似,他们都是将同一组的放在一起,所以处理宠物的朋友圈问题就是先将每一个宠物先看做一棵树,如果宠物1和宠物2是朋友,那么就将宠物1和宠物2这两棵树合并,这样通过计算树的个数就可以将朋友圈的个数计算出来。这里我们可以将宠物存放在一个数组中,初始化为-1,数组中的元素表示树根。
例如:为了方便起见我们将宠物分别设为0,1,2,3,4,下面分别以树的构建过程以及对应数组的变化来简述算法过程。
(1)首先,将它们分别看作一棵树,即:
(2)0和3是好朋友,首先检查0和3都是树根,那么使0指向3(更改0的树根为3)
相关知识
宠物社交问题——并查集的应用
宠物社交app盘点 你认识多少有关宠物的社交app?
云计算技术在宠物信息管理中的应用.docx
动物行为学在居住区宠物狗活动空间的设计应用
宠物旅游核心数据分析最新资讯
谁知道领养宠物的app
宠物社交定制系统开发
集宠区
开年首场宠物展!当生活美学与YA!宠生活集相遇北京
确定猫的确切行为问题,寻找合适的宠物行为主义者帮助解决宠物问题
网址: 宠物社交问题——并查集的应用 https://m.mcbbbk.com/newsview7202.html
上一篇: 为什么年轻人喜欢养宠物狗/猫? |
下一篇: 宠行宠宿 |