关于一个算法的迷惑

十二恨 2015-01-07 07:03:18
3 4 14
4 3 5
5 4 16
14 3 25
15 26
16 5 27
25 14 36
26 15
27 16
36 25 37
37 36

就是以上几组数据,每行都放在一个数组里。
我想把有相同元素的放在一个数组里。
比如第一组3 4 14
找到第二组4 3 5这里就多了个5,还得把有5的数组再加进来,如果有新的数据的再继续加,直到没有。
我想了好久,用到4for循环,都不成,大家都什么好的想法吗?有代码
...全文
225 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xionggch 2015-01-08
  • 打赏
  • 举报
回复

int a[5][3] = {{1,2,3},{1,2,4},{5,2,3},{1,6,3},{7,8,9}};
int b[5*3];
int i_b = 0;
int i,j,k;
memset( b, 0, sizeof(b) );
for( i=0; i<5; i++ )
{
	for( j=0; j<3 ; j++ )
	{
		for( k=0; k<i_b; k++ )
		{
			if( a[i][j] == b[k] )
				break;
		}
		if( k>=i_b )
		{
			b[i_b] = a[i][j];
			i_b++;
		}
	}
}

野男孩 2015-01-08
  • 打赏
  • 举报
回复
恩,这就是个图的遍历算法吧,这组数据是两个图,15和26一组,其他点一组 下面的数组假设是Arr01,Arr02,...一直到Arr11 3 4 14 4 3 5 5 4 16 14 3 25 15 26 16 5 27 25 14 36 26 15 27 16 36 25 37 37 36 最开始group数组是空的 1.对Arr01的3,4,14来说,3和4,14连接,所以记下来3,4,14到group[0],group[1],group[2] 2.这时候在上面数组里找group[1]为头结点的数据,找到Arr02的4,3,5,把3,和5插入到group里,3已存在,所以group[3]=5 3.继续,Arr系列数组里找group[2],也就是14开头的,找到Arr04的14,3,25,插入3,25到group,3存在,group[4]=25 4.继续。。。。重复以上过程 这样下来,3开头的连通图结点就能遍历到。 不知道你这个最终意图是啥,如果还要记录另一个图15和26,在group想要怎么表示这两个图的关系,楼主自己在琢磨琢磨吧
十二恨 2015-01-08
  • 打赏
  • 举报
回复
我已经解决了,谢谢大家了。用的笨方法。
ri_aje 2015-01-08
  • 打赏
  • 举报
回复
听起来就是广度优先遍历啊。
十二恨 2015-01-07
  • 打赏
  • 举报
回复
3 4 14 就拿这组数据来说,3代表个节点的号码,4,14代表是节点3的相邻节点中,与节点3一样的点。 总共有11个节点,每个节点只记录相邻一样的节点,所以得到11组数据。 我想把11个节点,根据它们的相同性分成不同的组。 简单的说: 每组数据的第一个是主节点,后面的是与主节点相邻的节点 第1组数据来说,3节点的相邻节点中与3一样的是4,14 然后找2组4节点的相关信息(4 3 5)和4组(14 3 25)分别得到与4相同的点5,与14相关的点25 然后找3组5节点的相关信息(5 4 16)和7组(25 14 36),有可以得到16和 36 然后再继续,知道11个节点都找完。 我每组数据都存在不同的一维数组中,int group[11],group[0]就是主节点,后面是相邻节点
乔巴好萌 2015-01-07
  • 打赏
  • 举报
回复
没太看明白题目要求
JiangWenjie2014 2015-01-07
  • 打赏
  • 举报
回复
问题不太明确啊,不知道你的数据是怎么得到的,贴一点代码吧。

65,206

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧