华为笔试:矩阵相邻
题目描述: 一个矩阵,5*5,取相邻(二个成员有一个边是相同的)的6个,输入一个6个成员列表,判断是否满足? 矩阵成员如下: [[1,2,3,4,5], [11,12,13,14,15], [21,22,23,24,25], [31,32,33,34,35], [41,42,43,44,45]]. 输入描述: 包含6个矩阵成员数组,如:1,2,3,4,5,11以一个空格分隔,支持多行 1,2,3,4,5,11 1,2,11,14,25,15 输出描述: 满足输出1,否则输出0,每一行输入一个输出 1 0 备注: 输入没有合法判断,每个成员不重复。 思路分析: 利用并查集实现。设定一个长度为6的数组,其中每个成员单独成组,接下来判断两两是否相邻,若相邻则合并为一组。最后判断是否存在孤立的组,若有则输出0,否则输出1。 代码: 1 #include<iostream> 2 #include<vector> 3 #include<algorithm> 4 using namespace std; 5 6 vector<int>Tree(6); 7 int findRoot(int x){ 8 if(Tree[x]==-1) return x; 9 int tmp=findRoot(Tree[x]); 10 Tree[x] = tmp; 11 return tmp; 12 } 13 14