路人甲,代码太乱、太长,我给你说一下思路吧。
建一个Vector用来存储产生的中间结果
首先,随机得到10个不相同的数存入数组,然后排序,和Vector中已经存在的数组相比较,如果有相同的,就跳出程序,否则将这个数组存入Vector中,继续以上的操作。

解决方案 »

  1.   

    拜托~你有没有算一算?
    从40个数中找10个数的组合方式一共有847660528种。
    每一种你都用长度为10的数组来存放,
    假设数组存整型数据(32位,4字节)。
    所以你对中间结果的保存就将花费最大为
    40×847660528÷1024÷1024=32335.6829833984375M
    的内存,你的512M根本就是3万M的内存的零头而已,
    呵呵~~~
    应该另外在想办法设计你的程序,等我想到了再说吧。祝你好运!
      

  2.   

    to: ppchen(韦古)
    老兄,那也得要几十G的硬盘呀~
    呵呵~~
      

  3.   

    反正是40个数,并不需要确定到底是哪40个,所以只需要纪录从0到39的编号就可以了
    因为要排序,所以我们只需要记录排序之后相邻元素的差,而这个差肯定不会超过30,所以每个元素就只需要5 bit来保存就够了。这样,10个元素的数组只是需要50个bit来保存,相当于7个byte
    那么我们一共就只需要32336M*7/50=4527M
      

  4.   

    首先更正楼上的公式,应该是:32336M×7÷40=5658.8M每个元素可以只用40个bits,用40个bits中的1和0表示对应的数有没有被选中。也就是说这40个bits中,有且只有10个“1”,30个“0”。
    这样就只有32336×5÷40=4042M
    呵呵~~,还是好大啊~