如何解决中间块问题(考虑边块并在行中间留下任何块)

时间:2011-07-25 16:20:17

标签: c++ algorithm visual-c++

我需要解决这个算法问题。在图中,有许多行具有不同的no。块。每个区块都是好的或坏的。块没有。 1对它是好块和休息都很糟糕。我需要在2中对这些块进行分组,以便找出这些分组的结果是好还是坏。如果我组成2组,我将检查所有块是否都有“1”。如果是,那么结果块是好的,否则是坏的。

问题:在进行块分组时,我总是要考虑边缘上的块。如果行具有奇数个块(假设为9)并且我正在组成2,则必须忽略中间块(第5个块),边缘上的块应该优先于中间块。我不知道如何解决这个问题,因为我在忽略中间块的情况下遇到了奇怪的问题。 block.It可以忽略任何块(靠近中间块),但必须考虑边缘上的块。

所以基本上,首先我需要根据groupsize找到该行是否具有奇数/偶数no.of块。然后,如果奇数没有。块在这里,离开中间的一个并在边上创建一个具有块的组,并在结果好或坏时找到结果。

在输入中,我有每个块的X和Y坐标及其信息,因为块是好还是坏。

enter image description here

1 个答案:

答案 0 :(得分:0)

似乎丢掉确切的中间块不是一个好的解决方案。使用7行的行,你应该可以制作3对,但是如果丢弃中心的那一对,你只能使用两对。

尝试交替从两端取块:左边一对,然后是右边的一对,然后是左边的一对。当你的两个指针(或索引)在中间交叉时,你就完成了这一行。必要时你会尽可能地丢弃一个靠近中间的区块,即使是奇数也不需要任何特殊情况。