问题描述
有个朋友请求帮忙解决一个难题:在几千个(N)金额数据中(有小数点后2位),需要找到一组数据的集合,使得集合中数据的和为某个固定的数M(是个整数),看用什么算法能快速找到这样的数据集合。不知道各位大侠有没有好办法!
解决方案
解决方案二:
先排序,然后一重循环得到的值大于m跳出循环,后面相同原理!packagetest;importjava.util.ArrayList;importjava.util.Collections;importjava.util.List;importorg.fluttercode.datafactory.impl.DataFactory;publicclassArrayAdd{publicstaticvoidmain(String[]args){DataFactorydf=newDataFactory();List<Integer>list=newArrayList<Integer>();for(inti=0;i<1000;i++){list.add(df.getNumber());}Collections.sort(list);finalintm=5000;inta=m-list.get(0)-list.get(1);intb=0;for(inti=0;i<list.size();i++){if(m<i){continue;}for(intj=i+1;j<list.size();j++){if(m<i+j){continue;}for(intj2=j+1;j2<list.size();j2++){if(m==i+j+j2){System.out.println("i="+i+",j="+j+",j2="+j2);System.out.println("num1+"+list.get(i)+"num2="+list.get(j)+"num3="+list.get(j2));}else{if(m<i+j+j2){continue;}}}}}}}