gpt4 book ai didi

java - Int [][] 搜索联合整数

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

我有一个固定大小的结构 int[][]。它充满了自然数。一个例子:

0 0 0 0 0 0 0
1 2 6 9 0 3 4
3 1 3 4 5 6 0
1 2 3 0 2 1 1
1 2 0 0 0 1 0

我的目标是检查我在这个结构中有多少个零“圆”。在此示例中,答案应为 4。
编辑
圆是包含所有关节零点的结构。这是什么意思?这些是可以从一个零向上、向下、向左或向右(不考虑对角线)到达的零。
示例解决方案:
第一圈:

0 0 0 0 0 0 0
1 2 6 9 0 3 4
3 1 3 4 5 6 0
1 2 3 0 2 1 1
1 2 0 0 0 1 0

第二个:

0 0 0 0 0 0 0
1 2 6 9 0 3 4
3 1 3 4 5 6 0
1 2 3 0 2 1 1
1 2 0 0 0 1 0

第三个:

0 0 0 0 0 0 0
1 2 6 9 0 3 4
3 1 3 4 5 6 0
1 2 3 0 2 1 1
1 2 0 0 0 1 0

第四个:

0 0 0 0 0 0 0
1 2 6 9 0 3 4
3 1 3 4 5 6 0
1 2 3 0 2 1 1
1 2 0 0 0 1 0

最佳答案

示例算法相当简单。

  1. 从之前未选中的位置开始。
  2. 找到一个零以及相邻的零。
  3. 将找到的零点的值更改为 1。[像 flood-fill]
  4. 增加计数器。
  5. 如果不是所有位置都被选中,则转到 2。
  6. else:报告结果。

您可能需要研究的是 Flood fill。喜欢这里:

https://en.wikipedia.org/wiki/Flood_fill


或者 - 更有趣。

定义一个 circle 类,它是一组 pixel[x,y]

  1. 找到所有零点位置 [x,y]
  2. 让每个个体零成为一个个体“圆”
  3. 将相邻的圆圈合并成更大的“圆圈”
  4. 继续合并(3-4)没有进展。
  5. 报告结果。

在这种情况下,适当的排序将是关键因素。
您将需要检查两个圆是否相邻的函数。
它提供了更多乐趣!

关于java - Int [][] 搜索联合整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40709090/

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