在一个20*20的个小格子的平面,有4个球,每个球的直径是两个小格子的大小,我想历遍整个平面,看小球在平面上有几种排列位置。有一个要求,小球的位置不能重叠,例如,球A占了1、2、11、12这四个格子的时候,其他的球就不能再占用其中的格子了。这个循环怎么写才更有效率?因为当中需要判断是否重叠了。

解决方案 »

  1.   

    看来你对算法的复杂度完全没概念,先缩缩水,算总共6亿组可能。
    先说数据量的问题,4个坐标4个字节放不下,就算按照4个字节能放下,已经需要2.4g的内存了,实际上32位程序根本放不下
    接着是时间复杂度,假设解决了内存的问题,不用通过更慢的外存,但是每次都还是要和已经有的数据进行比较。现在假设你的算法很好,得出一次结果平均只需要1亿次比较,其它操作时间完全忽略不计;并且你的cpu极强,每300亿次比较耗时1秒,那么总共只要200万秒就可以结束了
    也就是说,只要二十月天就可以得出全部的结果了
    实际上要解决的问题还很多,cpu速度不可能那么快,有没有可以实现平均每轮比较只相当于1/2数据量的1/3次数比较的算法还是个问号觉得怎么样,还打算玩么?