假设有N个用户,其中有些人是朋友,有些则不是。 A和B是朋友,B和C是朋友,这样ABC就是一个朋友圈,请计算给定的朋友关系的朋友圈数。 给定一个 N * N 的矩阵 M,表示用户之间的朋友关系。如果M[i][j] = 1,表示已知第 i 个和 j 个人互为朋友关系,否则为不知道。你必须输出所有用户中的已知的朋友圈总数。-笔试面试资料
这是qklbishe.com第6655 篇笔试面试资料
提供答案分析,通过本文《假设有N个用户,其中有些人是朋友,有些则不是。 A和B是朋友,B和C是朋友,这样ABC就是一个朋友圈,请计算给定的朋友关系的朋友圈数。 给定一个 N * N 的矩阵 M,表示用户之间的朋友关系。如果M[i][j] = 1,表示已知第 i 个和 j 个人互为朋友关系,否则为不知道。你必须输出所有用户中的已知的朋友圈总数。-笔试面试资料》可以理解其中的代码原理,这是一篇很好的求职学习资料
本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。
答案:
假设有N个用户,其中有些人是朋友,有些则不是。A和B是朋友,B和C是朋友,这样ABC就是一个朋友圈,请计算给定的朋友关系的朋友圈数。
给定一个 N * N 的矩阵 M,表示用户之间的朋友关系。如果M[i][j] = 1,表示已知第 i 个和 j 个人互为朋友关系,否则为不知道。你必须输出所有用户中的已知的朋友圈总数。
并查集裸题 写得啰里啰嗦….
import java.io.*; import java.util.*; public class Main{ public static void main(String[] args)throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); int[][] arr = new int[n][n]; for(int i=0;i<n;++i){ String[] arg = br.readLine().split(","); for(int j=0;j<n;++j){ arr[i][j] = Integer.parseInt(arg[j]); } } int[] f = new int[n]; for(int i=0;i<n;++i){ f[i]=i; } for(int i=0;i<n;++i){ for(int j=0;j<n;++j){ if(arr[i][j] == 1){ union(f,i,j); } } } int ans =0; for(int i=0;i<n;++i){ if(f[i]==i){ ans++; } } System.out.println(ans); } public static int find(int[] f, int a){ if(f[a]==a){ return a; } return f[a] = find(f,f[a]); } public static void union(int[] f, int a,int b){ int fa = find(f,a); int fb = find(f,b); f[fa]=fb; } }
2021-02-16 23:41:53 回复(0)
文章部分来自互联网,侵权联系删除
www.qklbishe.com
区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站部分资料来自网络,侵权联系删除!资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 假设有N个用户,其中有些人是朋友,有些则不是。 A和B是朋友,B和C是朋友,这样ABC就是一个朋友圈,请计算给定的朋友关系的朋友圈数。 给定一个 N * N 的矩阵 M,表示用户之间的朋友关系。如果M[i][j] = 1,表示已知第 i 个和 j 个人互为朋友关系,否则为不知道。你必须输出所有用户中的已知的朋友圈总数。-笔试面试资料
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 假设有N个用户,其中有些人是朋友,有些则不是。 A和B是朋友,B和C是朋友,这样ABC就是一个朋友圈,请计算给定的朋友关系的朋友圈数。 给定一个 N * N 的矩阵 M,表示用户之间的朋友关系。如果M[i][j] = 1,表示已知第 i 个和 j 个人互为朋友关系,否则为不知道。你必须输出所有用户中的已知的朋友圈总数。-笔试面试资料