算法问题

时间:2011-07-21 01:56:07

标签: vb.net visual-studio algorithm visual-studio-2008

我已将圆分为行和列,并且在圆中形成的每个块(正方形)具有相同的大小。我有每个方块/块的X和Y坐标。每个块都被定义为好或坏。

问题:我需要在同一行添加2个块,并确定结果是好还是坏。如果任何块都是坏的,则将两个块的组称为坏块。如果两者都很好,那么只有团体才是好的。它的算法是什么?我需要用视觉基础语言。另外,我需要做更多的情况,例如添加3个块并确定3个块的组是好还是坏。在这种情况下,如果任何阻止是坏的,整个组都是坏的。

更新:当我将圆分成行和列,即块时,我删除了不是方形的块。也就是说,删除那些接触圆周的方块/块。我现在可以上传这张照片了。

1 个答案:

答案 0 :(得分:0)

如果你要添加两个,那么一个badBlock意味着两边都不好导致3个坏了

1)设置struct {bool inCircle,badBlock,badGroup;}的NxN数组 如果块在圆圈中,则inCircle为真,如果块为坏,则badBlock为真,并且最初badGroup为false。

3)

int length=2;
length--;
for (int i=0; i<N;i++)
  for(int j=0; j<N;j++)
     if(array[i,j].badBlock){
       for(int x=-length;x<=length;x++)
           if(i+x>=0 and i+x<N and array[i+x,j].inCircle) then array[i+x,j].badGroup=true; 
       for(int y=-length;y<=length;y++)
           if(j+y>=0 and j+y<N and array[i,j+y].inCircle) then array[i,j+y].badGroup=true; 
}