减少许多嵌套循环的排列

时间:2010-06-17 09:56:21

标签: optimization loops combinatorics nested-loops permutation

我决定做一个图片来更好地解释这个,我只是想检查一下我的想法是否正常,并且我可以将总排列减少75%:

alt text http://www.freeimagehosting.net/uploads/45e5c6b05e.gif

1 个答案:

答案 0 :(得分:1)

你正在减少排列数量,但不是75%,因为小方块的所有可能位置都填满了6x6平方,而你的“四分之一”填满了4x4平方。

由于你的宿舍有“重叠”,你实际上是在添加一些排列。 由于您的四分之一是4x4,因此在中间列中有4个正方形重叠,而在您的中间行中有另外四个正方形。

不过,这比每个小方块的实际计算要少。

另外,通过这样做可以进一步提高2个方格的性能:

假设您有2个正方形,1个& 2.如果你的方格是:

11110000

11110000

00000000

02000000

这相当于:

00001111

00001111

00000000

00000020

00000020

00000000

00001111

00001111

因此,您可以在网格的第一个四分之一中循环遍历1的所有排列,而在网格的FIRST HALF(左侧)中排除2的所有排列。对第1季和第2季(第1季是左上角,第2季是右上角)这样做。