集合A里有n个元素,从A中取出m(m<n)个元素形成集合B(A中至少存在一个这样的B),使得这m个元素之和为一给定数值。

解决方案 »

  1.   

    TO:kingfish
    不是啊,才没有闲工夫研究那个呢,是毕业设计中的遇到的问题,我把它抽象出来了
      

  2.   

    TO bennyparlo:能不能简单的描述一下,我就是不知道怎么从n个元素中取出m个元素
      

  3.   

    简单说下我的思路。
    首先对A进行排序。然后查找定数值(sum)的位置。(用除二法)去掉大于sum的部分。
    为了操作方便可以把它转换成list进行操作。也可以添加几个方法实现int[]的remove的操作。
    从list取出前m-1个元素。和list最后一个元素求和(sumTemp)。如果sumTemp>sum,remove最后一位。如果相等纪录数据,如果小于。remove第m-2个元素。在从list取出前m-1个元素。和list最后一个元素求和(sumTemp)。循环进行操作。如果最后一位,和m-1相等时结束。