数组里任意个数数字相加等于一固定数值 java实现

8990阅读 0评论2017-09-30 landuochong
分类:Java

 遇到个问题:数组里任意个数数字相加等于一固定数值
于是自己用java实现了,欢迎大家提出更好的方法

public class SumTest {
    static final int SUM = 20;
    
    public static void getSum(int data[], List list, int pos){      
        if(pos >= data.length){
            return;
        }
        //System.out.println("getSum:" + pos);
        list.add(pos);
        int sum=0;
        for (Integer integer : list) {
            sum += data[integer];
        }
        if(sum             getSum(data, list, pos+1);
        }else{
            int npos;
            if(sum==SUM){
                StringBuilder builder = new StringBuilder();
                for (Integer integer : list) {
                    builder.append(data[integer]+",");
                }
               System.out.println("find:"+builder.toString());
                npos = list.remove(list.size()-1);
                if(list.size()==0){
                    npos++;
                }
            }else{
                npos = list.remove(list.size()-1);
                if(list.size()==0){
                    npos++;
                }else{
                    npos = list.remove(list.size()-1);
                }
            }
            getSum(data, list, npos+1);
        }  
    }  
    
    public static void main(String[] args) {
         int data[] = new int[20];
         for(int i=0; i              data[i]=i+1;
         }
         List list = new ArrayList();
         getSum(data,list, 0);
    }
}
上一篇:大数据学习笔记6-Hbase
下一篇:大数据学习笔记-环境相关常用命令