java - 在二维数组中随机生成簇

标签 java multidimensional-array

我正在创建一个 2d 瓷砖游戏,想知道在其中生成特定瓷砖类型的集群的最佳方法是什么。例如,假设我有一个二维数组,它是我的 map 。草用0表示。

{{0, 0, 0, 0, 0, 0}
 {0, 0, 0, 0, 0, 0}
 {0, 0, 0, 0, 0, 0}
 {0, 0, 0, 0, 0, 0}
 {0, 0, 0, 0, 0, 0}
 {0, 0, 0, 0, 0, 0}}

现在,我要做的是在我的数组中随机创建一簇树(用 1 表示)。我希望它看起来像这样:

{{0, 0, 0, 0, 0, 0}
 {0, 0, 0, 0, 0, 0}
 {0, 1, 1, 1, 0, 0}
 {0, 1, 1, 1, 1, 0}
 {0, 0, 1, 1, 1, 0}
 {0, 0, 1, 1, 0, 0}}

执行此操作的最佳方法是什么?

最佳答案

实现一个方法 M,该方法执行以下操作:对于给定的一组位置 S,它采用它们的相邻位置 N,但仅采用那些自身内部没有树的位置;将树放在这些相邻位置 N 的一些中,并调用自己递归地只传入它放置树的相邻位置 K(K 是 N 的子集)。

现在触发整个事情:在一个点 p 中随机放置一棵树,然后调用 M 将位置 p 的集合/列表传递给方法M.

此算法保证您将生成一个集群(我的意思是一组树,其中每两棵树都由其他树连接)。

确保您的递归在某个点停止(您可以通过引入特定阈值或使用其他适当的启发式方法来实现这一点)。

关于java - 在二维数组中随机生成簇,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28421373/

相关文章:

java - 自定义 Exoplayer 播放和暂停按钮

java - Titan DB 中的顶点 ID 更新

Java Spark MLlib : There is an error "ERROR OWLQN: Failure! Resetting history: breeze.optimize.NaNHistory:" for Logistic Regression in ml library

c# - LINQ 和 Array.Copy

PHP 多维数组 - 如何正确分组

Java PDF 操作,基于模式匹配替换文本,带有超链接

java - 如何修复 java 中对特定行和列求和的加法?

python - 将矩阵与列向量进行比较

c++ - 将 2D 数组传递给函数/构造函数

Java Spring : How to send http request to https urls?