gpt4 book ai didi

algorithm - 给定一个二维数组,找到簇

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:30:02 25 4
gpt4 key购买 nike

给定一个二维数组,例如:

0 0 0 0 0
0 2 3 0 1
0 8 5 0 7
7 0 0 0 4

输出应该是集群组:

集群 1:<2,3,8,5,7>

集群 2:<1,7,4>

最佳答案

您的问题似乎是寻找连通分量。您应该使用遍历方法(BFS 或 DFS 都可以)。遍历所有元素,对于每个非零元素开始遍历并记录您在该遍历中看到的所有元素,并将每个访问的元素变为零。类似于下面的代码:

void DFS(int x, int y)
{
printf("%d ", g[x][y]);
g[x][y] = 0;
// iterate over neighbours
for(dx=-1; dx<=1; dx++)
for(dy=-1; dy<=1; dy++)
if (g[x+dx][y+dy]) DFS(x+dx, y+dy);
}

for(i=0; i<n; i++)
for(j=0; j<n; j++)
if (g[i][j])
{
DFS(i, j);
printf("\n");
}

关于algorithm - 给定一个二维数组,找到簇,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8664808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com