arrays - C中的2D数组分组1
问题描述
1 和 0 的二维数组。如何用唯一的数字标记每组 1?我在这个问题上停留了一段时间。1可以垂直、水平和对角分组。你怎么能解决这个问题?例如,
0 0 1 1 0
0 1 1 0 0
0 0 0 0 1
0 0 0 1 0
应该转化为
0 0 x x 0
0 x x 0 0
0 0 0 0 y
0 0 0 y 0
x
,y
可以是任何唯一的数字。
欣赏它。这是我到目前为止的迭代:https ://i.imgur.com/oCmYC02.png 但结果有点偏离,因为它只检查直接相邻的 1:https ://i.imgur.com/DAtTBmM .png 有人知道如何解决这个问题吗?
解决方案
我会这样做:
- 逐行、逐列依次扫描二维数组
- 如果找到 1,则使用洪水填充算法的变体,从该起点开始向 8 个方向而不是 4 个方向移动(参见https://en.wikipedia.org/wiki/Flood_fill上的普通 4 方向算法),因为您每次使用新的填充数时,都有带有“y”的对角线示例。
- 重复 1 和 2,直到没有更多的人离开。
推荐阅读
- python-3.x - 异或十六进制数
- java - 评论无法转换为餐厅
- swift - 如何使用 iOS 向 Stripe 添加送货地址
- javascript - 如何使用条件逻辑从 js int html 中提取 Json 数据
- java - 使用 springdoc-openapi 和 spring-boot-starter-data-mongodb 生成 OpenAPI 文档
- python - 在 Jupyter-notebook dataFrame 中正确显示字符串间距
- algorithm - 如果在索引 k 处翻转一点成本现在是 2^k 而不是 1,那么二进制计数器中的摊销分析会发生什么?
- google-apps-script - Google 表格:Code.GS 未检测到数据刷新/获取
- azure-data-factory - 在使用暂存 Blob 存储 + Polybase 到 Azure 数据仓库的数据工厂中运行管道时出现管理器身份错误
- python - 如何在主页上显示子页面的子页面?(鹡鸰 / 姜戈)