我有一个N
x N
网格。我有一个标有0
的网格单元:
我打算按0
单元的顺序依次遍历网格单元:
0
的单元格开始1
2
如何构成循环?
我试图遵循这样的post。但我无法适应我的情况。
所有标记为1的像元的属性是,两个轴上的最大距离等于1,如果像元(x,y)的像元(x0,y0)在像元(x0,y0)上,则每个像元都相同。将等于max(| x-x0 |,| y-y0 |)
因此,要遍历所有标签,我们可以使用像这样的东西:
for (l = 0 -> min(x0, y0, N - x0, N - y0) + 1:
for (x = x0 - l -> x0 + l)
#checking cell (x, y0 - l)
for (y = y0 - l -> y0 + l)
#checking cell (x0 + l, y)
for (x = x0 + l - 1 -> x0 + l)
#checking cell (x, y0 + l)
for (y = y0 - l -> y0 + l)
#checking cell (x0 - l, y)
#checking cell (x0 - l, y0 + l)
如果您不在乎对相邻单元格进行迭代,则可以合并在x和y上迭代的循环。
ps:假定循环范围在开始时关闭,在结束时打开。即(x = a-> b)表示范围(a,a + 1,...,b-1)