我被困在我的评估中。我给它一个位图,其尺寸(行和列)如下:
4 5
0 0 1 1 1
0 0 1 0 1
1 0 1 1 1
1 1 1 1 1
任务是找到水平和垂直最长的线和一个正方形(全部由1组成)。我只需要第一次用水平线踢。
我已将位图放在1D数组中,我不知道下一步。
上图的输出是最长水平线的坐标:
3 0 3 4
非常感谢帮助。
答案 0 :(得分:1)
您必须将标题提取到结构和数据中,如同[]。
一样设R和C为图像的行数和列数。对于给定的数组a [],每行图像从[C * i]开始,其中i是行号。因此,您可以使用i索引该行,并使用C * i + j访问该行中的每个位,其中j小于C.接下来,您需要为每行执行processing
以查找最长水平线的长度。对此的小改动可用于索引列j并找到最长的垂直线。
要进行上述处理,请创建一个点结构
struct point
{
int x;
int y;
}p1, p2;
还创建一个名为lenh
的变量,该变量将包含找到的水平线的长度。用户变量llenh
也用于存储最长的长度。对于由(5i + j)索引的行(i,j)中的每个顶点。将llenh
设置为0.从行开始,看到1更新lenh
,然后查看它是否大于llenh
。如果是,则更新p1
点。看到0更新p2
点并将lenh
设置为0并同时更新llenh
。
我没有完全修改过这个问题。如有任何错误请评论..