排列组合,30中取7,做组合。PHP中算这个,大概要多少内存。用一维数组的方式保存。例:array('1,2,3,4,5,6,7','1,2,3,4,5,6,8'.......)然后要把这些写入数据库,每种组合一个表,组合作为列名,比如有个组合是(1,2,3,4,5,6,7),那么该表有7列,表大概会占多少空间。如果给每张表再加30个列,大概又会是多少空间?

解决方案 »

  1.   

    先算一下组合数
    <?php
    function 阶乘($n) {
      if($n == 0) return 1;
      return $n * 阶乘($n-1);
    }echo '组合数=' . 阶乘(30)/(阶乘(30-7)*阶乘(7));
    ?>
    得 组合数=2035800array('1,2,3,4,5,6,7','1,2,3,4,5,6,8'.......) 
    当用这样的数组保存时
    每个元素的平均长度大致为 6 + 7 + 7*(20/30)= 17.666
    所需内存不少于 35965800字节,约34.3M当保存到数据库时,设字段类型为VARCHAR(2),则一个记录所需空间为 7 + 7 + 7*(20/30)= 18.666
    至少占 36.3M 的硬盘空间
      

  2.   


    谢谢了,膜拜下。
    同样也谢谢其他几位。另外回复1楼,我不是搞彩票的-_-
    最近在做google analytics data api,里面有一个dimension上限只能取到7,