我有一个二维的对象数组,如果对象的clicked属性设置为true,那么应该将其视为“1”,否则为“0”。这些是选定的块。我需要检查所选框是否形成一个矩形最好的办法是什么?

最佳答案

高级:
记录最外层的1。
数一数所有的1。
如果计数等于最外面的1包围的区域,我们就有一个矩形。
伪代码:

left = width + 1
right = 0
top = height + 1
bottom = 0
count = 0

for x = 1 to width
for y = 1 to height
  if grid[x][y] == 1
    left   = min(left  , x)
    right  = max(right , x)
    top    = min(top   , y)
    bottom = max(bottom, y)
    count++

if count > 0 and count == (right-left+1)*(bottom-top+1)
  print "We have a rectangle!"
else
  print "We don't have a rectangle!"

关于algorithm - 在1s和0s的2d数组中找到1s的矩形,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15965328/

10-11 11:34