如何在二维字符数组中找到相同字符的菱形?
Posted
技术标签:
【中文标题】如何在二维字符数组中找到相同字符的菱形?【英文标题】:How to find rhombus of the same char in 2D Char Array? 【发布时间】:2022-01-12 02:23:48 【问题描述】:假设我有一个包含 2d 字符数组(最大为 12*12)的代码, 我想在组成菱形的字符数组序列中找到,我该怎么做?我想过制作一个布尔函数来检查每个地方是否与他的邻居和其他使用它来查找菱形的函数具有相同的值,但我真的不知道如何使用它。
最后,我想打印菱形中心值和构成菱形的字符。
thk
另一件事,我不能使用递归。 Example of rhombus in 2d array
【问题讨论】:
请提供足够的代码,以便其他人更好地理解或重现问题。 【参考方案1】:可能的方法:
制作四个相同大小的二维整数数组或一个二维数组数组[0..3]。
在四个方向上遍历所有对角线,如果邻居相似,则增加辅助数组的相应条目。例如,从右下角的顶部“F”走,将0、1和2分别放入UPLEFT[1][2], UPLEFT[2][3]
和UPLEFT[3][4]
。您可以逐行遍历两次(从顶部和底部),而不是对角线行走,在前向扫描期间检查所需的上邻居,在自下而上扫描期间检查底部邻居。
现在再次扫描阵列。当您有索引对 [k][m]
与 UPRIGHT[k][m]>0
和 DOWNRIGHT[k][m]>0
时,选择最小值
Wdt = min(UPRIGHT[k][m], DOWNRIGHT[k][m])
并检查UPLEFT[k][r]
和DOWNLEFT[k][r]
的值r = m + 2*Wdt downto m+2
以显示[k][m]
对中左角最大的菱形。
【讨论】:
@Swanky_Dwarf 我的回答不清楚吗?以上是关于如何在二维字符数组中找到相同字符的菱形?的主要内容,如果未能解决你的问题,请参考以下文章