[英]JS: I got a test task, I don’t know how to do it. Can you tell me what are the options for solving this task?
公司有N人。 他们中的许多人是朋友。 此外,有趣的事实是朋友的朋友也是朋友。 您需要了解公司中有多少朋友有某个特定的人。
输入数据
函数应接收下一个参数: N - 公司人数 S - 特定人数 矩阵 N 行包含 N 个由 1 和 0 组成的数字。 并且位于第 i 行和第 j 列的单位确保编号为 i 和 j 的人 - 朋友,而 0 - 表示不确定性。
输出数据
函数应该返回带有 S 编号的人的某些朋友的编号,记住可传递的友谊。
Example1:
N = 3
S = 1
Matrix = 0 1 0
1 0 1
0 1 0
Result: 2
Example2:
N = 5
S = 2
Matrix = 0 0 0 0 0
0 0 1 0 0
0 1 0 0 1
0 0 0 0 1
0 0 1 1 0
Result: 3
由于这显然是一个家庭作业问题,我不会给你代码,你可以直接复制粘贴。 不过,我会提供指导。 两个人之间的每一次友谊都代表着他们之间的一种联系,您可以使用快速联合来生成友谊组件。 然后,你可以找到这个人所在的组件的大小,减去1,这就是他有多少朋友。
或者,如果您只需要查找一个人的朋友,您可以维护一个朋友数组,并使用该人的直接朋友进行初始化。 然后,您可以递归到每个朋友上,如果他们有任何不在数组中的朋友,则将该人添加到数组中并递归到他们上。 这将比第一种方法更快。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.