求在双核1.6G和512M机器上,0.5秒以内生成并能显示所有4782969注的明细单我对比了市面上所有软件,全列举的速度都很慢,只有一个软件的速度异乎寻常的快!一直搞不清楚他使用什么数据机构和算法,除数据机构和算法外,我们也猜测与存储机制也有关系,有14个篮子,每个篮子有三种颜色的球,列举3的十四次方的明细单,即不是计算注数而是得到所有的详细单, 即在list中显示4782969注不同的可能,我在同学的双核1.6G和512M机器上,一般情况下低于0.4秒就能计算并列举完所有可能,保存为TXT有七十多M的数据量!速度实在让人震惊!!!!!!不知道有高手可以分析出模型和算法么?

解决方案 »

  1.   

    足彩?Server is too busy
      

  2.   

    和编写平台也有关,比如VC就比BCB快
      

  3.   

    K 一下人, 3楼的很垃圾, 什么 VC 比 BCB 快, 完全是胡说八道, 不懂装懂楼主的问题似乎跟算法无关, 只是主观的一个感觉0.4s 写一个 70m 的文件对现代硬盘来说基本上都是不可能实现的, 所以, 这是一个主观的感觉问题写盘用完成端口去做的, 完全可能会在写盘时产生一个非常高效的感觉, 实际数据还会一会才真实写到硬盘, 但文件列表时就看到了, 换句话说, 这时强制关机, 就写不全了
      

  4.   

    先计算结果大小,规划执行步骤,即分段,因为有可能有足够大的内存,也有可能内存不足,所以需要进行分段(如果有足够的内存,当然就只一个分段),然后预分配内存空间,运算(分段的),然后采用Overlapped IO写入(CreateFile带上FILE_FLAG_OVERLAPPED参数,WriteFile带上Overlapped结构)。
      

  5.   


    你可真笨 0.5s后就可以点保存,5S秒后,投注单全在一个7十多M的文件里像你这样投机取巧也研究不出什么好的办法
      

  6.   

    这不是投机取巧,大型的软件常用的方法:PhotoShop、AutoCAD都有此类方法。
    不信你打开大一些的文件,可以明显感觉。
    至于算法,这种问题的最直接算法是循环,效率最高的肯定的循环。如果用C,还可以用指针提高效率。
    在内存中算4782969注的明细单的明细,按现在的计算机速度,应该也只是数十毫秒级的事情。
    1.6GHz的双CPU,假设不用线程,一秒钟可进行的运算是多少?
    0.5s还算是慢的了。
    这个计算的关键是内存的管理,如果还要另外申请内存,时间开销就在系统的内存调用上了;
    当然,0.5s的全部显示,按现在的控件好像也是不现实的,所以当然要用一定的方法处理。
    不管怎么说,0.5s肯定是可以计算出来的,用Delphi的控件显示出来肯定是来不及的。