{
A[i, j] = A[i, j - 1];
list[A[i, j] - 1].Add(new Point(i, j));
}
}
else if (B[i - 1, j - 1])//判断左上
{
if (A[i - 1, j - 1] != 0)//左上面有值,则此点与左上点连通
{
A[i, j] = A[i - 1, j - 1];
list[A[i, j] - 1].Add(new Point(i, j));
}
}
else if (B[i - 1, j])//判断上点
{
if (A[i - 1, j] != 0)//上一点中已有值,则此点与上一点连通
{
A[i, j] = A[i - 1, j];
list[A[i, j] - 1].Add(new Point(i, j));
}
}
else//这是个新连通
{
A[i, j] = list.Count + 1;
list.Add(new List<Point> { new Point(i, j) });
}
}
}
else//在左边缘,只需判断上面的元素
{
if (i > 0)//不在左上角
{
if (B[i - 1, j])
{
if (A[i - 1, j] != 0)//上一点中已有值,则此点与上一点连通
{
A[i, j] = A[i - 1, j];
list[A[i, j] - 1].Add(new Point(i, j));
}
else//上一点没值,这是一个新的连通
{
A[i, j] = list.Count + 1;
list.Add(new List<Point> { new Point(i, j) });
}
}
}
else//在左上角
{
A[i, j] = list.Count + 1;
list.Add(new List<Point> { new Point(i, j) });
}
}
}
}
}
上一页 [1] [2]