我有一个如下数组:
a b c d e
f g h i j
k l m n o
p q r s t
u v w x y
它表示为一个字符流(abcdef...
),我知道每个字符的位置(01234...
)。我需要找到数组中边缘的位置,这样我就不会超出界限。考虑到有八个方向,我提出了以下内容:
//n is numerical position, ie. n = row+(col*width)
//for the above 5x5 array, width = 5, height = 5
if n - width - 1 < 0 it's top-left corner
if n - width < 0 it's top edge
if n - width + 1 < 0 it's top-right corner
if (n - 1) % width = 0 it's left edge
if (n + 1) % width = 0 it's right edge
但我不确定如何推断底边和底角。
我最好的猜测是:
if n + width - 1 < height*width it's bottom-left corner
if n + width < height*width it's bottom edge
if n + width + 1 < height*width it's bottom-right corner
答案 0 :(得分:1)
底行将来自:
( height*width - width <"u"> ) [to] ( height*width - 1 <"y"> )
之间的所有项目都是底行,而height*width - width
的边缘位于左下角,height*width - 1
位于右下角。
答案 1 :(得分:1)
您可以使用n = x + y * width
:x = n % width
和y = n / width
来推断角色的确切位置。现在只测试各自的边缘情况:
x == 0
(左)x == width - 1
(右)y == 0
(上)y == height - 1
(下)